如何在此代码中停止事件冒泡
How to stop event bubbling in this code?
$('#div1').on('click', '#otherDiv1', function(event){
//Show popup
$('#popupDiv').bPopup({
modalClose: false,
follow: [false, false],
closeClass: 'close'
});
event.stopPropagation();
$('#div2').on('click', '#otherDiv2', function (event) {
// here is ajax request
// close popup
$('#popupDiv').bPopup().close();
event.stopPropagation();
});
}
多次点击 otherDiv2 调用 ajax 函数,我该如何停止?
网页代码
<div id="div2">
<div id="div1"><div id="otherDiv1">Click</div></div>
<div id="popupDiv"><div class="close">X</div>
<input id="otherDiv2" name="otherDiv2" type="submit" value="Click" />
</div>
</div>
弹出 Div 是动态创建的
当我单击otherDviv1时,弹出窗口已打开,里面是一个用于ajax请求的按钮。当我单击按钮时,会调用一个请求并关闭弹出窗口。如果我再单击一次 otherDiv1 并按下按钮,请求将被调用两次,依此类推。
谢谢
没有必要
在另一个click
中绑定第二个click
。您的代码将每个click
上的click
绑定到#otherDiv2
#otherDiv1
。对于以下过程不需要stopPropagation()
.
$('#div1').on('click', '#otherDiv1', function(event) {
//Show popup
$('#popupDiv').bPopup({
modalClose: false,
follow: [false, false],
closeClass: 'close'
});
});
$('#div2').on('click', '#otherDiv2', function(event) {
// here is ajax request
// close popup
$('#popupDiv').bPopup().close();
});
但是,如果需要在另一个事件中绑定事件,则首先从#otherDiv2
中取消绑定事件,然后再次绑定。
$('#div1').on('click', '#otherDiv1', function(event) {
//Show popup
$('#popupDiv').bPopup({
modalClose: false,
follow: [false, false],
closeClass: 'close'
});
$('#div2').off('click').on('click', '#otherDiv2', function(event) {
// here is ajax request
// close popup
$('#popupDiv').bPopup().close();
});
});
我想你可以使用
event.stopImmediatePropagation()
以阻止冒泡。
http://api.jquery.com/event.stopImmediatePropagation/
如果你使用相当新版本的jQuery,每个ajax请求都会返回延迟对象,你可以将其存储在点击处理程序的外部范围内并进行分析,以便取消现有请求或不启动新请求。
还有一个叫做节流的概念,还有jquery的插件可以为你做。
相关文章:
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- php代码在textbox更改事件上显示null
- 如何在Win8Metro应用程序的Javascript代码中捕获自己的C#事件
- 访问代码生成的输入元素上的keyup事件
- 如何在 JavaScript 代码中调试点击事件处理
- 如何使用我的Jquery代码创建委托事件侦听器
- 如何使用onclick事件触发此代码.我尝试过,但失败了
- 在单击事件中,第一次单击时激发代码一次,其余代码在所有单击时运行
- 为什么动态加载的事件在我的代码中不能正常工作
- 我需要java代码来打开html代码onclick事件
- 使用Javascript代码在文本框上激发退格事件
- onbeforeunload事件在我的代码中没有触发,但其他示例可以工作
- 如何在onclick事件执行代码时在ImageButton上设置加载gif
- 在按钮'上运行PHP代码;s onclick事件,或者使用Ajax
- 我想在每个按钮点击事件上加载多个图表.我使用了下面的谷歌代码
- JAVASCRIPT-“;事件内部代码”;超时?o.o
- 键盘事件代码
- 加快我的Javascript滚动事件代码
- 如何为html文本框中的图像编写click事件代码
- jQuery点击事件代码无限重复