2012-06-03 196 views
1

我试图使用jQuery .appendTo方法,但在执行代码时,该页面将变为空白和所有元素的两个不同父div的之间招子div元素已从DOM删除。剩下的只是标签内的纯文本。这是该页面是如何奠定了(但当然不是简单的因为这个例子对于实际的网站,看到下面的链接。):jQuery appendTo删除所有的DOM元素?

<div id="flip-container"> 
    <div id="flip-card"> 

     <div class="front face" id="frontPage"> 
     <div id="start"> text content...</div> 
     <div id="about"> text content...</div> 
     </div> 


     <div class="back face" id="backPage"> 
     <div id="references"> text content... </div> 
     <div id="contact"> text content... </div> 
     </div> 


    </div> 
</div> 

我使用jQuery父面前之间移动孩子的div /回脸上的div使用appendTo方法:

$("#references").appendTo($("#frontPage")); 

此代码单独的作品,这就是给你的实际网站是如何布局的想法。

在执行上面的代码,所有div字面上擦干,只留下身体标记和DIV内容。因此,我不知道div是否确实移动正确。这发生在所有浏览器,我已经尝试了几种不同的jQuery方法,如prependTo,append,inserAfter和clone。所有结果都一样。是的,指定的div确实存在。很显然,我已经疯狂搜索这个,但我能找到的是这个,它真的不回答这个问题:JQuery append element removes all html dom elements

那么这里有什么问题,我错过了什么?任何帮助是极大的赞赏。

对于实际代码和失败代码,请访问以下链接。 单击其中一个页脚图标,然后再按一次以查看出现的问题。

http://utvecklingpunkten.se/list2LS/iscroll.html

+0

工作正常http://jsfiddle.net/RDwkM/ – Esailija

+0

http://jsfiddle.net/tncDL/ ?? bazinga :)正在工作 –

+0

在该行上设置一个断点并跨越它以确保这确实是导致擦除的语句。 –

回答

2

看看你的源代码:

<div id="statisticsDiv" class="innerPages"> 
    <script> for(i=0;i<50;i++) {document.write("statistics "+i+"<br>"); }</script> 
</div> 

您正在使用document.write来创建页面元素的含量。

现在,当您单击“统计”图标(第二次)时,DIV将重新定位到页面的不同部分。 这会导致SCRIPT块再次执行。 Live example因此,document.write将执行。结果,该页面将被销毁。

规则是当页面加载事件后执行document.write时,页面被销毁,并替换为提供给document.write的新内容。

我的建议是避免document.write。相反,在DOM准备事件处理程序中生成内容,并使用jQuery来查找页面元素并设置其内容。

+0

非常好,谢谢。我永远都不会想到我自己。如果你愿意,我已经花了整个周末来解决这个问题,现在我终于可以休息一下了,真是一种解脱。再次感谢! – Jonathan