JQuery函数绑定到单击body体系的事件,并立即执行另一个click事件

时间:2012-05-23 15:22:03

标签: javascript jquery click bind

$().ready(function(){
    $("#move-to").click(function(){
        $("body").bind("click",function(){
            alert("foo");
        });
    }); 
});

为什么我在点击“移动到”后立即看到警告(“foo”)? 当我在文件中的某些div上绑定“警报”时,可以使用evrithing 可以来帮忙吗? 我做错了什么?

2 个答案:

答案 0 :(得分:3)

运行#move-to处理程序后,点击事件会冒泡到<body>,然后触发您刚绑定的处理程序。

您可以通过拨打e.stopPropagation()来阻止这种情况。

或者,您可以在此事件周期后绑定<body>点击事件,方法是将bind()移至setTimeout来电。

答案 1 :(得分:0)

$().ready(function(){
    $("#move-to").click(function(e){
      e.stopPropagation();
      $("body").bind("click",function(){
       alert("foo");
      });      
    }); 
});

但我认为你单击#move-to时反复绑定点击事件的代码,如果你没有在其他地方取消绑定点击事件,那就不好了。