JQuery如何停止事件传播

时间:2015-08-05 10:59:11

标签: jquery javascript-events stoppropagation event-propagation

我希望阻止事件传播,以便每次点击“完成”时,警报只显示一次

这是我的代码:

$('body').on('click', '#product', function () {

    var x = "hi";
    $('#done').click(function () {
        alert(x);
    });

});

小提琴: http://jsfiddle.net/s4sz29ew/1/

4 个答案:

答案 0 :(得分:1)

$('body').on('click', '#product', function () {

    var x = "hi";
    $('#done').click(function (e) {
        alert(x);
e.stopPropagation();
    });

});

答案 1 :(得分:1)

我认为这就是你要找的东西:

$('body').on('click', '#product', function () {

 var x = "hi";
 $('#done').click(function (e) {
    e.stopPropagation();
    alert(x);
  });

});

我不确定你到底要做的是什么。上面的代码对我来说有点奇怪:如果你想观看#done点击,那么只使用这个id

 $('body').on('click', '#done', function (e) {
    e.stopPropagation();
    alert('test');
 });

答案 2 :(得分:1)

您可以使用event.stopPropagation(); 它将阻止事件冒充DOM。

请参阅:https://api.jquery.com/event.stoppropagation/

答案 3 :(得分:0)

您可以使用布尔标记' buttonclicked'并将其标记为true,单击该按钮然后使用

var buttonclicked = false;    
$('body').on('click', '#product', function () {

       var x = "hi";

       $('#done').click(function () {
           if(buttonclicked) {
              return;
           } else {
              alert(x);
              buttonclicked = true;
           }
       });

});