2011-11-13 10 views
2

私はいくつかのコンテンツを追加するクラスにライブリスナーを持っています。 これは何とかこのリスナーを繰り返し呼び出しています。この場合、どのように伝播を止めることができますか?jquery - 不要な伝播の影響

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; 
});  
+0

.page()は何をしますか? – bozdoz

+0

jquery mobileは、動的にCSSを追加すると考えています。私はそれを削除しましたが、違いはありません –

答えて

1

jQueryのライブ関数には、hereといういくつかの欠陥があります。興味深い部分はこのステートメントです

イベントハンドラでevent.stopPropagation()を呼び出すと、ドキュメントの下に添付されたイベントハンドラを停止するのに効果がありません。イベントはすでに文書に伝播しています。

あなたは予想通り(hereを参照)ではなく)「ライブ」とするevent.stopPropagationへの呼び出し(のは動作するはず「の」新しいjQueryのメカニズムを使用する必要があります。

0

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

Source wiki

また、

jQueryのsays

event.stopPropagation() 

説明:イベントが通知されてから任意の親ハンドラを防止し、DOMツリーをバブルアップからのイベントを防ぎます。

これが役に立ちます。