javascript - 多个点击监听器被添加到同一个 html 元素中

标签 javascript jquery html

我的 html 看起来像这样:

<div id="container">
    <div class="sub"></div>
    <div class="sub"></div>
    <div class="sub"></div>
    <div class="sub"></div>
</div>

然后在 javascript 中,我在文档就绪函数中设置了一个点击监听器:

$(document).ready(function(){
    $('.sub').click(function (event) {
        //do something
    });
});

后来我动态添加更多 .class 元素,这样我的 html 看起来像:

<div id="container">
    <div class="sub"></div>
    <div class="sub"></div>
    <div class="sub"></div>
    <div class="sub"></div>

    <div class="sub"></div>
    <div class="sub"></div>
    <div class="sub"></div>
    <div class="sub"></div>
</div>

我再次添加点击监听器:

function addListeners(){
  $('.sub').click(function (event) {
        //do something
    });
}

现在,前四个 .sub 元素附加了两个单击处理程序,单击时它们会触发两次。有更好的方法吗?

最佳答案

您可以委托(delegate)该事件:

$(document).ready(function(){
    $('#container').on('click', '.sub', function(event) {
        //do something
    });
});

关于javascript - 多个点击监听器被添加到同一个 html 元素中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14882639/

相关文章:

javascript - 如何在 Javascript 中连接数组值

javascript - 加载js文件之前不执行javascript(异步)

javascript - 将输入值与跨度内的文本进行匹配

javascript - 放置由javascript生成的同一图像的多个实例

jquery - 使用 select2 将空值添加到 DropDownListFor

php - 如何显示多个 SQL 数据库行的内容

javascript - 如何将图像从服务器加载到phonegap中的img文件夹中

javascript - 如何在 JavaScript 中对每个循环的选项值求和

javascript - 如何在 Azure 表存储中查找与值数组不匹配的记录?

javascript - jQuery:toggleClass 不适用于下拉菜单