【发布时间】:2012-11-03 07:51:31
【问题描述】:
我正在编写一个 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/
在上面的演示中,您会看到“显示警报”按钮显示“你好!”的警报。点击时。如果您触发插件并关闭插件,您会注意到“显示警报”按钮现在有两个与之关联的单击处理程序,因此在单击时会显示两个警报。
我的插件将无法控制它正在运行的页面的内容。当我将正文内容包装在 DIV 中时,有没有办法可以防止内联脚本重新运行?
【问题讨论】:
标签: javascript jquery html events dom