0

如果我使用appendTo移动被移动的脚本块周围的 DOM 树的部分,则重新运行,即它们运行两次。

示例:http: //jsfiddle.net/EHDqE/

有没有更好的方法来移动 DOM 部分而不再次执行其中的脚本块?

4

2 回答 2

1

两件事情:

首先,将脚本直接嵌入到代码中并不是一个好习惯。它们应该在您的标题中引用,并包含在单独的文件中。

其次,我认为不可能阻止该脚本再次运行,就像appendTo()您正在查看的 DOM 元素的 HTML 重写一样。这意味着您需要直接访问文本,而不是整个元素。@Ohgodwhy 的解决方案是正确的:

$("#one").text().appendTo("#two")

但是(如果这不是作业问题),我恳请您考虑将脚本移动到标题中,因为这是当前的最佳实践。

于 2012-09-21T17:35:47.613 回答
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>​

脚本

times_executed = 0;


$("#one").appendTo("#two");​
于 2012-09-21T17:45:45.917 回答