我有 2 个事件,一个按键和一个点击。我想将它们放入一个函数中,当调用该函数时,无论触发哪个事件都会执行它应该执行的操作。
示例:
var close = function () {
$('.alert').remove();
};
$(document).on('keydown', function (event) {
if (event.keyCode === 27) {
//27 = ESC
close();
}
});
$('.alertBG').on('click', function () {
close();
});
我想不出一种方法可以让 document
和 .alertBG
部分很好地发挥作用。 (Fiddle)
最佳答案
不要。你们的功能差别太大了。您已经将它们的可重用部分分解到您从两者调用的 close
函数中。这是最好的方法。
如果您确实愿意,那么您必须将 click/keydown 处理程序绑定(bind)到 document
并测试事件和元素的类型。
$(document).on("keydown click", function (event) {
if (
(event.type === "keydown" && event.keyCode === 27) || (event.type === "click" && (
$(event.target).is(".alertBG") || $(event.target).parents(".alertBG").length))) {
close();
}
});
正如您所看到的,当事件处理程序之间存在如此多的差异时,单独绑定(bind)事件处理程序会更干净。
关于javascript - 如何在js中为两个单独的事件触发一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31586899/