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

「move-to」をクリックした直後に alert("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 に答える