2011-10-26 5 views
1

別の愚かな質問、私は他のすべてのスレッドを介してそれを把握できないので、ここの誰かがhopefulyすることができます。基本的に、IVEはそうjQueryの伝播の問題

when click inside document 
spawn div 

when click div 
do nothing 

when doubleclick div 
do this 

現時点ではそれを得た私は、それをダブルクリックしたときに

デモがhttp://jsfiddle.net/OwenMelbz/PaAt2/

であり、それはコードを実行んが、それはまた、私がクリックし、別のdivを生成します要素上に

私のコードは上に掲載したようにjsfiddleにあります!

ありがとうございました

+0

doubleclickイベントでもstopPropagation()メソッドを呼び出す必要があると思います。 – arkigos

+0

ライブイベントのストップ伝播の問題http://stackoverflow.com/questions/1122375/jquery-event-stoppropagation-seems-not-to-work – Birey

+0

感謝のビピンスは、それを読むのが良かった:)問題はキースによって解決された! – Owen

答えて

2

なぜこれが私に役立つかわかりません。 http://jsfiddle.net/PaAt2/4/。これは、ライブハンドルイベントとバインドの関係に関係している可能性があります。

+0

あなたは私の友人、素晴らしいです:)ありがとう!その今働いている - http://the-dot.co.uk/dev/Project%20v1/project.php?project=15 – Owen

+0

これは本当にクールなユーザーインタラクションです!私はそれを助けることができてうれしい。 –

1

Keithは、live()とbind()の動作の違いにより、彼のソリューションがうまく動作することが正しいです。

bind()は、呼び出されたjQueryオブジェクトのすべてのDOM要素にイベントハンドラを添付します。 live()はjQueryのイベントハンドラを 'Event Context'にアタッチします(詳細はhttp://api.jquery.com/liveを参照してください)。デフォルトでは、これはDOMツリーのルートです。このイベントハンドラは、バインドされているオブジェクト内でDOMオブジェクトをバブルアップ(または伝播)するイベントを捕捉します。それがキャッチされると、イベントの発生元を調べ、live()が適用されたjQueryオブジェクトのセレクタと一致する場合は、イベントハンドラとして指定した関数引数を実行します。

これは、コンテナ(この例では '#project-wrap')がクリックイベントにバインドされている場合、通常はそのコンテナ内のものから発生するクリックを獲得することを意味します。コンテナただし、live()を使用してコンテナにイベントをバインドすると、そのコンテナ自体から発生したクリック、つまりコンテナ内の空きスペースからのクリックであり、そのコンテナ内の何かをクリックすることはありません。

+0

ああ、2番目の段落は、ライブとバインドの仕組みを理解して確認しただけです!本当にありがとう! – Owen