2

いくつかのコンテンツを追加するクラスにライブリスナーがあります。これはどういうわけかこのリスナーを繰り返し呼び出しています。この場合、伝播をオフにするにはどうすればよいですか?

SomeContent = "<p>Some content<p>";
moreContent  = "<p>More content<p>";

$('.myClass').live('change', function (event){                  
    var thisOption = $(this);                               

    // event.preventDefault(); - does not work              
    // event.stopImmediatePropagation(); - does not work

    var MyLocation = thisOption.closest('tr').next('tr');               
    // $(MyLocation).html("");                  
    var thisTplReasons = $(moreContent);
    thisTplReasons.appendTo(MyLocation).page();

    return false;
});     
4

2 に答える 2

1

jQueryライブ関数には、ここに記載されているいくつかの欠陥があります。リストの興味深い部分はこのステートメントです

イベントハンドラーでevent.stopPropagation()を呼び出すことは、ドキュメントの下部にアタッチされているイベントハンドラーを停止するのに効果的ではありません。イベントはすでにドキュメントに伝播されています。

「live」ではなく「on」(ここを参照)の新しいjQueryメカニズムを使用する必要があり、event.stopPropagation()の呼び出しは期待どおりに機能するはずです。

于 2011-11-13T23:02:32.967 に答える
0

イベントは、最初にターゲット要素に到達するまでキャプチャされ、次にバブルアップされます。イベントフロー中、アクションを発生させるか、イベントを停止することにより(W3C準拠のブラウザーの場合はevent.stopPropagation()メソッドを使用して)、いずれかのフェーズのパス内の任意の要素(オブザーバー)でイベントに応答できます。コマンドevent.cancelBubble=True(Internet Explorerの場合)、および/またはイベントのデフォルトのアクションをキャンセルする。

ソースウィキ

また、

jQueryは言う

event.stopPropagation()

説明:イベントがDOMツリーをバブリングするのを防ぎ、親ハンドラーにイベントが通知されないようにします。

お役に立てれば。

于 2011-11-13T23:05:24.150 に答える