如何使用单击方法在元素内部添加单击方法
How to add a click method inside of element with click method?
假设我有:
<div id="outer" onclick="thingsHappen()">
<div id="inner"></div>
</div>
当我单击外部或内部div 时,将执行 thingsHappen()。这是显而易见的。
现在我需要为内部div 定义一个不同的方法。例如
$("#inner").click(function() {
doThings();
});
当我单击内部时,两个 thingsHappen() 和 doThings() 都会执行。当我单击内部div 而不执行 thingsHappen() 时,如何执行 doThings()?
我试图从 #inner 取消绑定单击方法,但它不起作用。我无法更改HTML的结构。
停止事件的传播:
$("#inner").click(function(e) {
doThings();
e.stopPropagation();
});
示例:http://jsfiddle.net/QNt76/
JavaScript 事件会在 DOM 树中冒泡,除非你阻止它们传播。这就是导致父事件处理程序收到通知的原因。
你想要Event.stopPropagation()
:
$("#inner").click(function(e) {
doThings();
e.stopPropagation();
});
与子元素相关的事件会冒泡到 DOM 中的父元素,除非像这样停止传播:
$("#inner").click(function(event) {
doThings();
event.stopPropagation();
});
这里有一个关于捕获/冒泡和Javascript事件的好读物。 http://www.quirksmode.org/js/events_order.html
$("#inner").click(function(e) {
e.stopPropagation();
doThings();
});
您要做的是阻止事件(单击)"冒泡"。 在这种情况下,您可能希望在冒泡阶段停止事件的传播。 如果你使用的是jquery,你可以使用这个函数:
.HTML
<div id="outer" onclick="thingsHappenOuter()">
<div id="inner">
</div>
</div>
.JS
$("#inner").click(function(event) {
event.stopPropagation();
// do something
});
请参阅:http://api.jquery.com/event.stopPropagation/了解更多信息。
您必须停止传播到文档树:
$("#inner").click(function(event) {
doThings();
event.stopPropagation();
});
请参阅:http://api.jquery.com/event.stopPropagation/
防止事件在 DOM 树中冒泡,防止任何父处理程序收到事件通知。
相关文章:
- 如何在单击复选框后调用控制器方法
- 我该如何阻止单击方法多次工作
- Ajax.BeginForm标识在OnComplete方法中单击的按钮
- 在上下文菜单项单击上显示侧边栏/弹出窗口的最佳方法是什么
- 操作方法:第一次单击动画 1,第二次单击动画 2
- 如何使用 javascript 而不是使用控制器中的方法在 rails 中呈现部分按钮单击
- 在浏览器关闭时,单击确认对话框中的“停留在页面上”,执行一个方法
- Jquery Ajax调用,以便在单击a href时将数据发送到该方法
- 如果释放鼠标时内部元素未悬停,则防止触发“单击”的正确方法
- TreeView在单击展开而不是服务器ping时执行javascript方法
- 使用.load方法后,请收听单击事件
- 单击按钮后需要jQuery方法重定向-ASP.NET、VB.NET、jQuery、Javascript
- 是否有任何方法可以在单击“加载前确认”对话框的“确定”按钮后执行某些操作
- 单击按钮时调用java方法
- now.js-对象没有方法,但在jquery中单击事件工作
- 在Chrome扩展程序中从网页按钮单击调用JavaScript方法
- 如何通过指定的元素而不是 $(this) 调用 jquery 单击方法
- 如何使用单击方法在元素内部添加单击方法
- 如何将单击方法添加到无序列表中的 href 链接
- 称“单击()“;方法返回undefined,尽管该元素确实存在