2
    var myWindow = $("<div id='msgwindow'/>").someWidget({
      option1: true,
      option2: someVariableWhoseValueChanges
     });

上記のコードが複数回実行されるとどうなりますか? #msgwindow という ID を持つ要素は、完全に上書きされますか、それとも部分的に上書きされますか? 最初に破棄されてから再作成されますか? 以前のインスタンスからぶら下がっている痕跡はありますか? イベントリスナーはどうなりますか?

4

2 に答える 2

1

someWidget()質問のコードは、既存の要素には適用されません。新しい要素を作成し<div>、ウィジェットをその新しい要素に適用します (<body>ウィジェットによっては、要素がページの に追加される場合と追加されない場合があります)。

したがって、このコードを数回実行すると、いくつかの要素が作成され、DOM に追加される可能性があります。これらの要素はすべて同じid属性を共有するため、ドキュメントが無効になります。

于 2013-02-20T13:40:29.987 に答える
1

要素は上書きされません。簡単に言うと、同じ ID を持つ別の要素が DOM に作成されます。

私が知る限り、 などのイベントリスナーは、 DOM でその ID に一致する要素の最初のインスタンスでのみ起動し$("body").on("click", "#msgWindow"ます。

ドキュメントに複数の ID を持つべきではありません。クラスの使用を検討してください。

于 2013-02-20T13:41:38.733 に答える