Jquery移动点击事件绑定(bind)两次

标签 jquery jquery-mobile

我有两个 html 页面,一个 index.htmlgroups.html 每个页面作为 ul > li > 一个 列表 具有不同的类名。

我已将点击事件放在单独的 js 文件中,如下所示:

// Index Page Onclick events

  $('body').on('click','.menuClass',function(e) {
    e.preventDefault();
    var menuid = $(this).attr('id');
    alert(menuid);        
  });

// click on groups html  >>  this page alert fires twice

$('body').on('click','.grpClass',function(e) {
    e.preventDefault();
    var menuid = $(this).attr('id');
    alert(menuid);

});

脚本文件被加载到两个 html 文件中,groups.html 的第二个函数触发点击事件两次。

有什么方法可以避免它或有更好的方法来实现相同的目的吗?

最佳答案

使用stopImmediatePropagation(),它将阻止事件在页面的 DOM 中冒泡:

// Index Page Onclick events

  $('body').on('click','.menuClass',function(e) {
    e.preventDefault();
    var menuid = $(this).attr('id');
    alert(menuid);        
  });

// click on groups html  >>  this page alert fires twice

$('body').on('click','.grpClass',function(e) {
    e.preventDefault();
    e.stopImmediatePropagation();
    var menuid = $(this).attr('id');
    alert(menuid);

});

以下是其工作原理的示例: JSFIDDLE 。如果您单击 test1,则会阻止冒泡,并且仅显示一个警报。如果您单击 test2,事件不会停止,您将收到两个警报。

关于Jquery移动点击事件绑定(bind)两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12052132/

相关文章:

jquery - 使用react ref作为jquery的选择器

javascript - 在此 INTO WORDS 转换 Javascript 中转换美分值

javascript - 从选择下拉列表中显示/隐藏 DIV

jquery - 禁用移动 jquery 中的过去日期

javascript - 如何从 JavaScript 检索 json

Javascript JQuery 变量串联(form.inputtag.value)

javascript - 带有嵌套菜单/多级菜单的 JQuery Mobile 滑动面板

javascript - hamburgler.js 无法在移动设备上关闭

javascript - 实现 jQuery 下拉效果

javascript - 如何将 h3 和 p 添加到 anchor 标记