Javascript 如何更好地处理事件
如果我在一个元素上有多个事件,我当前正在处理这些事件,如下所述:Javascript 如何更好地处理事件,javascript,jquery,Javascript,Jquery,如果我在一个元素上有多个事件,我当前正在处理这些事件,如下所述: $("body").on("click", ".element", function(e) { // Do something on click }); $("body").on("change", ".element", function(e) { // Do something on change }); 有没有办法将一个元素上的所有事件合并到一个on()调用中?如果有多个事件与一个元素关联,那么最佳做法是
$("body").on("click", ".element", function(e) {
// Do something on click
});
$("body").on("change", ".element", function(e) {
// Do something on change
});
有没有办法将一个元素上的所有事件合并到一个on()
调用中?如果有多个事件与一个元素关联,那么最佳做法是什么
$("body").on("change click", ".element", function(e) {
// Can I detect here if it was change or click event and perform an action accordingly?
});
$('#元素')。打开('keyup keypress blur change',函数(事件){
警报(event.type);//按键或按键、模糊或更改
});代码>
是!jQuery传递包含事件信息的事件对象:
$("body").on("change click", ".element", function(e) {
console.log(e.type);
});
您可以使用事件的type
属性来确定要执行的逻辑:
$('body').on('change click', '.element', function(e) {
if (e.type == 'click') {
// do something...
}
else if (e.type == 'change') {
// do something else...
}
});
或者,您可以向
上的提供一个对象,该对象包含要与事件类型名称作为键绑定的函数:
$('body').on({
click: function() {
// do something on click...
},
change: function() {
// do something on change...
}
}, '.element');
我个人会使用后一种方法。当使用相当难看的
if
语句拆分事件类型时,使用统一的on()
处理程序的全部意义都被否定了。您可以使用事件.type
。有些人会说这是一种不好的做法,而另一些人可能会发现它很有用
$("body").on("change click", ".element", function(event) {
switch (event.type) {
case 'click':
break;
case 'change':
break;
default:
}
});
尝试
e.type
找出触发的事件类型。查看一下,这是最佳做法还是比我目前使用的更好的方法?@APatel这取决于您对事件的反应。如果反应非常不同,那么最好将它们分开,而不是在回调的开头有一个大的If语句来包装它们……哪一个是最佳实践?单独使用它,还是将所有事件合并在一起并处理它?它在性能或可重用性方面有什么不同吗?为您的问题添加了一点注释。没问题,很乐意帮助。