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语句来包装它们……哪一个是最佳实践?单独使用它,还是将所有事件合并在一起并处理它?它在性能或可重用性方面有什么不同吗?为您的问题添加了一点注释。没问题,很乐意帮助。