2009-07-13 3 views
22

を動作しないようです私は完全にこれを行うことになっているものが足りませんか?私はstopPropagation()をイベントで呼び出すと、そのイベントのハンドラが先祖要素でトリガされないことを期待していますが、下の例は(FireFox 3では少なくとも)FireFox 3では機能しません。jQueryのするevent.stopPropagationは()

答えて

50

ライブイベントは、同じイベントバブリングルールに従いません。 live event handlingのドキュメントを参照してください。上記基準から

引用:

ライブイベントは 伝統的な方法ではないバブルを行うと はのstopPropagationまたは stopImmediatePropagationを使用して停止することができません。 「LI」と別の「李A」に結合している 1 - 例えば、 は、2つのクリックイベントのケースを取ります。 内側のクリックが発生した場合は、 アンカーの両方のイベントがトリガーされます。なぜならとき $( "李") これはある(、FNを "クリック")に結合します。あなたが実際に言っている バインドされている「 - やLI要素の内部 - クリックイベントがLI要素で発生するたびに。この クリックイベントをトリガー」ライブイベントの処理をさらに停止するには、 fnは falseを返す必要があります。

+0

恐ろしいです。 clarificationatinに感謝します。 – morgancodes

+1

私はここに同じ質問をしています:http://stackoverflow.com/questions/7961418/is-it-possible-to-stop-child-click-events-propagating-to-parents-when-handled-byライブイベントで伝播を止めなければならないときはどうしますか?私は動的にロードされた要素を扱っているので、ライブハンドラを削除する選択肢はありません。 – RGBK