2012-01-27 7 views
0

私はその中に内容がたくさんあるDIVを持っています。私はdetach()とafter()を使って、ドキュメントのどこかに配置します。.detach()を使用するとイベントが削除されますか?

これ以前は、.bind()を使用してDIV内のチェックボックスにいくつかのクリックイベントを挿入しました。

これはうまくいくようです。

私がDIVで終わったら、元の場所に戻します。 .detach()とafter()の同じメソッドをもう一度使用すると、クリックハンドラがなくなったように見えます。

detach()のこれは正常な動作ですか?イベントを保存する適切な方法はありますか?

私のDIVには、バインドされたクリックを使用してチェックボックスにいくつかの検証機能を持つフォームが含まれています。デタッチは、モーダルダイアログにフォームを配置し、ユーザーがダイアログを閉じるとフォームを非表示のDIVに戻すために使用されます。ユーザーがフォームのダイアログを再び開くと、クリックイベントが失われます。

+2

jQuery 'detach()'は、イベントハンドラと要素に関連付けられたデータを扱う必要があります。フィーダを減らして問題を再現できますか? – fcalderan

+1

いいえ、 'detach'はイベントハンドラを保存し、ドキュメントを見ます。問題が発生した場合は、それ以外のものでなければなりません。 –

+1

質問:jQueryデータと見なされるのはバインド(「クリック」)ですか?私はdetach()を使用する必要があるかどうかだけを考えています。代わりにremove()を使うことができます。 – Matthew

答えて

0

したがって、.detach()を使用してもイベントは削除されません。

私は私の問題は、私のクリック機能は、チェックボックスのjQueryの配列に(静かに)失敗したことがあっても、私の実際のコード

http://jsfiddle.net/n874q/5/

に近いバイオリンを使用して、これを再現するように見えることができませんでした関数がバインドされたときに渡されました。

代わりに、配列を関数に渡すのではなく、関数内でセレクタを介してチェックボックスを探して問題を解決しました。

ありがとうございました。