[当我用jquery编写一个悬停事件时,我想对mouseenter和mouseleave都做一个常见的行为。
$foo.hover(
function () {
common_before_process();
// ...
common_after_process();
},
function () {
common_before_process();
// ...
common_after_process();
}
);
我已在此处将处理过程提取为一个函数,但是我认为,如果将这两个过程从事件处理程序中完全删除,将更易于阅读。所以问题是,有没有一种方法可以简洁地描述上述功能提取的通用过程?
例如,我想要的是以下行为(仅一个示例):
$foo.hoverAfter(common_after_process);
$foo.hoverBefore(common_before_process);
$foo.hover(
function () {
// ...
},
function () {
// ...
}
);
我建议将回调传递给通用函数。类似于:
function toggleHover (callback) {
common_before_process();
callback();
common_after_process();
}
function methodForHoverOn () {}
function methodForHoverOff () {}
$foo.hover(
function () {
toggleHover(methodForHoverOn);
},
function () {
toggleHover(methodForHoverOff);
}
);
一个方法执行通用逻辑,并执行传入的闭包,该闭包随您需要而变化。