javascript - 如何更好地处理事件

标签 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("change click", ".element", function(e) {
    // Can I detect here if it was change or click event and perform an action accordingly?
});

最佳答案

您可以使用事件的type属性来确定要执行的逻辑:

$('body').on('change click', '.element', function(e) {
    if (e.type == 'click') {
        // do something...
    } 
    else if (e.type == 'change') {  
        // do something else...
    }
});

或者,您可以向 on 提供一个对象,其中包含与事件类型名称作为键绑定(bind)的函数:

$('body').on({
    click: function() {
        // do something on click...
    },
    change: function() {
        // do something on change...
    }
}, '.element');

我个人会使用后一种方法。当使用相当丑陋的 if 语句来拆分事件类型时,拥有统一的 on() 处理程序的全部意义就被否定了。

关于javascript - 如何更好地处理事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29794552/

相关文章:

javascript - 使用 css 和图片打开新窗口

javascript - 均衡垂直空间相同但高度不同的盒子

java - 如何将 Java 对象转换为 JSON 字符串?

javascript - Mobile Safari 的日期/时间类型输入字段触发了哪些事件?

javascript - JS 代码不起作用,尝试在 css 类(class)中做一个演示

javascript - jQuery 1.4.2 在更改文本字段时使用 .delegate

javascript - 使用grails生成html id的最佳实践

javascript - JS/CSS 底部固定定位在 web 和移动 web 上不同

javaScript getElementByDID来自表单输入

javascript - 在 ruby​​ on Rails 中使用 ajax 调用 js.erb 文件