0

ajaxのロード時にAエレメントが交換された場合、そのエレメントでブラインドされたすべてのイベントとデータが切断されるか、直接削除されることを知りたいのですが。

一度交換された場合、ブラインドトラフではないイベントやデータ$(parent), $(document) or $(window)が維持されるとは思いません。もしそうなら、それらは単に切断または削除されていますか?

4

1 に答える 1

2

イベントが要素に直接バインドされている場合(委任されたイベント処理ではない)、その要素が削除されると、イベントハンドラーも削除されます。

同様に、プロパティまたは属性がそのDOM要素に追加されている場合、それらはその特定のDOM要素と一緒に使用されるため、DOM要素が削除されている場合も同様です。

委任されたイベント処理を使用している場合(またはなどのより高いレベルの親オブジェクトにバブルアップするイベントを監視しているbody場合document、イベントが実際にアタッチされているオブジェクトは置き換えられないため、これらのイベントは引き続き配置されます。


質問はjQueryでタグ付けされていませんが、jQueryのような例をいくつか使用しているため、jQueryの世界では、次のようにイベントが添付されます。

$("#myObject").on('click', fn);

#myObject交換時に削除されます。しかし、このような委任されたイベント:

$(document.body).on('click', '#myObject', fn);

イベントが実際にアタッチされているオブジェクト(この場合)が削除または置換されなかった#myObjectため、同じIDを持つ別のオブジェクトに置き換えられた場合でも、引き続き有効です。document.body

于 2013-01-27T18:59:00.410 に答える