javascript - 其他阻止内部事件处理程序冒泡的方法,jQuery

标签 javascript jquery

显示的示例代码 here .这行得通,但我想知道是否有另一种方法可以做到这一点,而不必创建一个事件处理程序,其唯一目的是防止冒泡在其上执行的消息,直至其祖先。

基本上我想要代码做的是:凡是 span 标签 不是的地方,然后调用 p 的事件处理程序> 标签。另一种表达方式:凡是 span 标记 的地方,都不要调用 p 标记的事件处理程序。

我尝试做 this ,但它没有用。当点击 span 标签时它仍然冒泡,这是我想要防止的

最佳答案

jsFiddle demo

$("div").on('click', "p", function(e){
    if(e.target.nodeName != 'SPAN') {
      alert("p was clicked"); 
    }
});

检查在您的第一个事件处理程序中单击的元素的类型。仅当它是 P 元素时才显示警报。

编辑:关于 jQuery 传递给事件处理程序的参数的更多信息:e.currentTarget 指的是您放置了事件监听器的元素(在此case 你的 p 标签)和 e.target 指的是你实际点击的元素(当你点击 span 时指的是 span 元素,当你点击 p 时指的是 p 元素).

关于javascript - 其他阻止内部事件处理程序冒泡的方法,jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29219272/

相关文章:

jquery - 当自定义按钮的 ng disabled 为 true 时禁用 css 悬停效果

javascript - 单击时显示随机 div

javascript - DOM 加载后,Jquery 函数无法与多个函数一起使用

javascript - 在动态生成的表angularjs中显示/隐藏元素(div)

javascript - AngularJS select 似乎需要在同一个对象上匹配才能设置所选选项

javascript - Ajax 响应文本的数据使用情况

javascript - jQuery Ajax 两个相同的函数适用于其中一个而不适用于另一个

javascript - 遍历嵌套对象并使用 es6+ 按值获取 obj

javascript - 如果 JSON 和 Array 中存在相同的值,请执行某些操作

javascript - iOS:使用本地 javascript 文件打开 UIWebView