如果我使用appendTo移动被移动的脚本块周围的 DOM 树的部分,则重新运行,即它们运行两次。
示例:http: //jsfiddle.net/EHDqE/
有没有更好的方法来移动 DOM 部分而不再次执行其中的脚本块?
如果我使用appendTo移动被移动的脚本块周围的 DOM 树的部分,则重新运行,即它们运行两次。
示例:http: //jsfiddle.net/EHDqE/
有没有更好的方法来移动 DOM 部分而不再次执行其中的脚本块?
两件事情:
首先,将脚本直接嵌入到代码中并不是一个好习惯。它们应该在您的标题中引用,并包含在单独的文件中。
其次,我认为不可能阻止该脚本再次运行,就像appendTo()
您正在查看的 DOM 元素的 HTML 重写一样。这意味着您需要直接访问文本,而不是整个元素。@Ohgodwhy 的解决方案是正确的:
$("#one").text().appendTo("#two")
但是(如果这不是作业问题),我恳请您考虑将脚本移动到标题中,因为这是当前的最佳实践。
我之前不得不做类似的事情......有点hacky但是...... http://jsfiddle.net/teewuane/EHDqE/3/
HTML
<div id="one">
a
<script type="text/javascript">
if(times_executed == 0){
alert(1);
times_executed+=1;
}
</script>
</div>
<div id="two">
b
</div>
脚本
times_executed = 0;
$("#one").appendTo("#two");