1

別のばかげた質問です。他のすべてのスレッドを介してそれを完全に理解することはできないので、ここの誰かができることを願っています。

デモはhttp://jsfiddle.net/OwenMelbz/PaAt2/にあります

基本的に私はそれを手に入れました

when click inside document
spawn div

when click div
do nothing

when doubleclick div
do this

現時点では、ダブルクリックするとコードが実行されますが、要素をクリックすると別の div も生成されます。

上に投稿したように、私のコードはjsfiddleにあります!

ありがとう

4

2 に答える 2

2

理由はわかりませんが、これは私にとってはうまくいきました。http://jsfiddle.net/PaAt2/4/。ライブがイベントを処理する方法とバインドする方法に関係している可能性があります。

于 2011-10-26T17:30:00.530 に答える
1

キースは、live()とbind()の動作の違いにより、彼のソリューションが機能することは正しいです。

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

つまり、コンテナ(この例では「#project-wrap」)があり、そのクリックイベントにバインドすると、通常、そのコンテナ内のあらゆるものからクリックが発生します。これは、コンテナにバブルアップするためです。ただし、live()を使用してイベントをコンテナーにバインドすると、そのコンテナー自体から発生したクリックのみが取得されます。つまり、コンテナー内の空のスペースからのクリックのみが取得され、コンテナー内に含まれるものはクリックされません。

于 2011-10-26T18:27:42.827 に答える