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

为什么单击“移动到”后立即看到警报(“foo”)?
当我在文档中的某个 div 上绑定“警报”时,一切正常。
可以来人帮忙吗?
我做错了什么?

4

2 回答 2

3

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

您可以通过调用来防止这种情况发生e.stopPropagation()

<body>或者,您可以在此事件循环之后通过将 移动bind()setTimeout调用来绑定单击事件。

于 2012-05-23T15:24:03.367 回答
0
$().ready(function(){
    $("#move-to").click(function(e){
      e.stopPropagation();
      $("body").bind("click",function(){
       alert("foo");
      });      
    }); 
});

但是我认为您在单击时一次又一次地对单击事件进行代码绑定,#move-to如果您不在其他地方取消绑定该单击事件,这并不好。

于 2012-05-23T15:25:21.423 回答