javascript - jQuery 应用事件处理程序的最佳方式

标签 javascript jquery

我正在处理一个包含 20 列和 100 多行的网格。每列都有一个输入字段。现在我想将事件处理程序放在输入字段上,例如 changekeyupfocus 等等。所以可以有 20*100 个事件 = 2000!

最好的方法是什么?我读过一些关于 eventHandlers 和内存问题的文章。

我认为我应该这样做:

$("#grid input").each(function() {
    $(this).keyup(function() {
        // 
    });
    $(this).change(function() {
        // 
    });
});

或者这是最好的方法吗?

$("#grid").keyup(function() {
        // 
});

最佳答案

您正在寻找事件委托(delegate)

$("#grid").on("change", "input", function() {
    // Handle the event here, `this` refers to the input where it occurred
});

附加一个 处理程序(在#grid 上),仅当事件通过与第二个选择器匹配的元素时,jQuery 才会触发该处理程序。它调用处理程序,就像处理程序附加到实际的 input 一样。 jQuery 的机制甚至支持像 focus 这样原生不冒泡的事件。

更多信息 the on documentation .

关于javascript - jQuery 应用事件处理程序的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40773392/

相关文章:

jquery - 按热键跳过 li 不工作 jquery

javascript - Android 5.1 WebView javascript 问题

javascript - 将 Zigfu 关节位置从真实世界转换为投影,就像 OpenNI 中一样

javascript - 通过 promise 链传递结果无法访问?

java - 在浏览器中运行的 Java 应用程序和 JavaScript 可以相互通信吗?

javascript - 在加载新图表之前清除单个 svg

jQuery,创建一个可以插入到页面中的 HTML block

javascript - 在 Bootstrap 中使用词缀沿导航推送链接

javascript - primefaces 嵌套的 tabview 和选项卡,无法滚动选项卡

javascript - 如何在不使用ajax重新加载页面的情况下将javascript值获取到php变量中