停止内部事件处理程序冒泡的其他方法,jQuery
Other ways to stop bubbling from inner event handlers, jQuery
此处显示的示例代码。这是可行的,但我想知道是否有另一种方法可以做到这一点,而不必创建一个事件处理程序,其唯一目的是防止在其上执行冒泡消息,直到其祖先。
基本上,我希望代码做的是:只要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");
});
相关文章:
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- 如何从其他方法访问Angular.js$scope
- 停止内部事件处理程序冒泡的其他方法,jQuery
- 有没有办法将选择器返回到元素?是$(这个)还是其他方法
- 使用一个方法在c#中启动其他方法
- 使用appendchild或其他方法向ul添加html代码而不是纯文本
- 用Javascript或其他方法通过语音读取整个HTML页面(离线)
- 有没有其他方法可以在远程服务器上包含php文件?除了<?php include()>
- 为什么不't我的Javascript,如果其他方法有效的话
- 有没有办法使用画布或其他方法在 HTML 中制作圆形图像
- 无法获得其他方法是否可以在 HAML JavaScript 中正常工作
- 有没有其他方法可以在 jquery 中删除类
- 获取父对象并通过介于两者之间的窗体传递给其他方法
- 使用 jQuery 工具提示插件(或任何其他方法)显示带有 PHP 对象属性的工具提示
- 除了通过JavaScript追加之外,还有其他方法可以将动态数据添加到jQuery移动页面中吗?
- 有没有其他方法可以选择HTML元素
- 如何使用javascript或其他方法清除IE DNS缓存
- 是否可以使用 JQuery 或其他方法在两个浏览器窗口之间拖放一些内容
- 其他方法使用 setInterval 调用的方法无法访问 js 中的对象属性
- 在默认情况下将可枚举设置为 false 的 JS 中创建对象属性的其他方法是什么