私はjQueryプラグインを書いています。このプラグインでは、既存のBODY
コンテンツを でラップしDIV
て非表示にします。
var $originalBodyContents = $('body').wrapInner('<div>').children('div').hide();
次に、プラグインは独自のオーバーレイDIV
を に追加し、BODY
プラグイン マジックを実行します。ユーザーがプラグインを終了すると、オーバーレイが削除されDIV
、ラップが解除されます。
$originalBodyContents.children().unwrap();
このデモでわかるように、これはうまく機能しています:
http://jsfiddle.net/vKddB/1/
ただし、ページにコンテンツ スクリプトがある場合は、ラップが発生したときにすべてが再読み込みされ、コードが再度実行されます。このデモでわかるように、これは多くの予期しない動作を引き起こしています:
http://jsfiddle.net/vKddB/3/
上記のデモでは、[アラートを表示] ボタンに「こんにちは!」というアラートが表示されていることがわかります。クリックしたとき。プラグインを起動してプラグインを閉じると、[アラートを表示] ボタンに 2 つのクリック ハンドラーが関連付けられていることがわかります。これにより、クリックすると 2 つのアラートが表示されます。
私のプラグインは、それが実行されているページのコンテンツを制御できません。本文の内容を でラップするときに、インライン スクリプトが再実行されないようにする方法はありDIV
ますか?