如果我使用 appendTo 来移动DOM树的部分,那么移动的脚本块会被重新运行,即它们会运行两次。
实施例: http://jsfiddle.net/EHDqE/
有没有更好的方法来移动DOM部分而不再在其中执行脚本块?
答案 0 :(得分:1)
两件事:
首先,将脚本直接嵌入代码中并不是一种好习惯。它们应该在标题中引用,并包含在单独的文件中。
其次,我不相信有可能阻止该脚本再次运行,因为appendTo()
会对您正在查看的DOM元素执行HTML重写。这意味着您需要直接访问文本,而不是整个元素。 @ Ohgodwhy的解决方案是正确的:
$("#one").text().appendTo("#two")
然而(如果这不是一个家庭作业问题),我会恳请您考虑将脚本移动到标题中,因为这是目前的最佳做法。
答案 1 :(得分:1)
我之前必须做类似的事情......有点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>
SCRIPT
times_executed = 0;
$("#one").appendTo("#two");