0

標準の $(function(){.

私もいくつかの調整を加えた ajax 呼び出しを持っています。ラップすると、新しいバージョンが 1 回呼び出され、古いバージョンが 1 回呼び出されます。Unwrapped は古いバージョンを呼び出すだけです。関数がdivに埋め込まれているため、二重の実行に関するバグが見られました。これは可能ですか?

JSFiddleデモの作業。まもなくアップします。

$(".words").click(function(event) {
    event.preventDefault();
    $("#hideme:first").attr('id', '').insertAfter($('#9999'));  
}); 

更新: サード パーティのコードで不適切なイベント ハンドラーを見つけたときに、一部の呼び出しを修正できました。しかし、1つはまだ残っています。競合がないようにIDを変更しました。別の悪いイベント ハンドラがどこかにあるようです。イベントハンドラーをアンカーに見つける方法はありますか?

4

2 に答える 2

1

同じ問題を引き起こすjsfiddleをまとめました。私の例では、2つのdivを配置し、両方ともクラス "test"を使用し、一方を他方の中にネストしました。外側をクリックすると関数が1回呼び出され、内側をクリックすると関数が2回呼び出されます。私の推測では、あなたにも同じことが起こっているでしょう。

http://jsfiddle.net/jcolicchio/HXVcm/

編集:これはそれを修正したようです:

$(document).ready(function(){
    $('.test').click(function(e){
        alert("HI!");
        e.stopPropagation();
    });
});​

e.stopPropagationを追加することは、リンクと送信ボタンに適用されるpreventDefaultではなく、探しているもののようです。

于 2012-11-27T03:50:30.130 に答える
0

event.stopPropagation();関数の実行を2回停止するために使用します。

$(".words").click(function(event) {
    event.preventDefault();
    event.stopPropagation();
    $("#hideme:first").attr('id', '').insertAfter($('#9999'));   
});

event.stopPropagation();イベントがDOMツリーをバブリングするのを防ぎ、親ハンドラーにイベントが通知されるのを防ぎます。

http://api.jquery.com/event.stopPropagation/

于 2012-11-27T03:54:15.033 に答える