5

e.stopPropagation() が何をするのかよくわかりません。

ハンドラーを使用するリンクがある場合、return false必要なものを取得する必要があります (デフォルトのリンク動作を防止するため、次の href の場所を「呼び出す」ことはありません):

<a id="myLink" href="http://www.google.com">Go to google</a>​

$('#myLink').click(function (e) {
    alert("No, you don't go to Google");
    return false;
});​

e.stopPropagation()何を追加できますか?e.stopPropagation()何ができるかを示す確かな例を教えてください。

4

4 に答える 4

11

簡単に、stopPropagationそのコンテナ、そのコンテナのコンテナなどにバブリングするイベントを停止します。

これが実際の例です: http://jsfiddle.net/5B7sw/

HTML:

<div id="container">
    <button id="propagate">Propagate</button>
    <button id="nopropagate">Do not Propagate</button>
</div>

そしてjs:

$('#container').click(function(){
   console.log('container click') ;
});


$('#propagate').click(function(){
   console.log('propagateclick');
});


$('#nopropagate').click(function(e){
   console.log('nopropagateclick');
    e.stopPropagation();
});

ボタンのタイトル「propagate」(デフォルトの動作) をクリックすると、「propagate click」と「containerclick」がコンソールに書き込まれます。への呼び出しを含むボタンをクリックe.stopPropagation()しても、コンテナへの伝播が停止しているため、「コンテナ クリック」メッセージは出力されません。

于 2012-06-08T09:27:58.057 に答える
1

あなたの例e.stopPropagation()では何もしません。

e.stopPropagation()ネストされた要素の場合に、他の要素がイベントを受け取らないようにするために使用できます。

于 2012-06-08T09:26:57.727 に答える
0

それはあなたが思っているものではありません..

伝搬停止とは、同じイベントがその親タグに伝搬されないことを意味します。

于 2012-06-08T09:28:03.263 に答える
0

event.stopPropagation() は、イベントがその祖先を介してバブルアップするのを防ぎます。これは、問題の子要素に一致する.delegate()または.live( )を使用して祖先にアタッチされたハンドラーが起動しないことを意味します。この事実を説明するデモを次に示します: http://jsfiddle.net/fSBGC/6/

于 2012-06-08T09:42:42.033 に答える