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

Other ways to stop bubbling from inner event handlers, jQuery

本文关键字:其他 方法 jQuery 内部 事件处理 程序      更新时间:2023-09-26

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

基本上,我希望代码做的是:只要span标记不是,就调用p标记的事件处理程序。另一种表述方式是:只要span标记,就不要调用p标记的事件处理程序。

我试着这样做,但没有成功。当点击span标签时,它仍然会弹出,这就是我想要防止的原因

jsFiddle演示

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

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

edit:关于jQuery传递给事件处理程序的参数的更多信息:e.currentTarget是指您放置了事件侦听器的元素(在本例中为p标记),e.target是指您实际单击的元素(单击span时指span元素,单击p时指p元素)。

jsFiddle Demo

检查鼠标事件的事件目标。如果目标是跨度,则从处理程序返回

$("div").on('click', "p", function(e){
 if($(e.target).is("span"))return;
 alert("p was clicked"); 
});