javascript - 如何停止此代码中的事件冒泡?

标签 javascript jquery bpopup

$('#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函数,如何停止?

HTML代码

<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>

popupDiv 是动态创建的

当我点击 otherDviv1 时,弹出窗口打开,里面是一个用于 ajax 请求的按钮。当我单击按钮时,将调用一个请求并关闭弹出窗口。如果我再点击一次 otherDiv1 和按钮,则会调用两次请求,依此类推。

谢谢

最佳答案

没有必要在另一个 click 中绑定(bind)第二个 click。在每次 click#otherDiv1 时,你的代码将 click 绑定(bind)到 #otherDiv2。对于以下过程不需要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();
});

但是如果您需要在另一个事件中绑定(bind)事件,那么首先从 #otherDiv2 中解除绑定(bind)事件,然后再次绑定(bind)。

$('#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();
   });
});

关于javascript - 如何停止此代码中的事件冒泡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11865740/

相关文章:

javascript - 如何将 create-react-app 使用的错误页面合并到自定义项目中?

c# - javascript 和 C# 中的 SHA1 base64 算法

javascript - Raycaster 不适用于组合相机 - 三个 js

javascript - 如何在rails的js中更改 View 变量

javascript - 在 JavaScript 中从变量传递数据

javascript - ngWYSIWYG - Angular 真实富文本编辑器无法在 bpopup 内编辑

jquery - 弹出窗口中的内容不显示在 IE 9 中

javascript - 获取子数据 Microsoft Dynamics WebAPI

javascript - 如何区分同一类的不同输入?

javascript - bpopup jQuery 不工作