JQuery函数绑定到身体节点的点击事件,另一个点击事件立即执行

JQuery function binded to click event of body node with another click event executed immediately

本文关键字:事件 执行 另一个 绑定 函数 节点 JQuery      更新时间:2023-09-26
$().ready(function(){
    $("#move-to").click(function(){
        $("body").bind("click",function(){
            alert("foo");
        });
    }); 
});

为什么我在单击"移动到"后立即看到alert("foo"(?
当我在文档中的某个div上绑定"alert"时,evrithing是可以的.
能来点什么帮助吗?
我做错了什么?

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

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

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

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

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