0

所以,我有一个这样的模板 div:

<div class='container'>
  <div class='mybox invisible' id='template'>
     <span>some stuff</span>
     <div>test</div>
  </div>
</div>

所以我想克隆它以基于它创建项目。

new_item = $('#template').clone()
$(new_item).removeClass('invisible').attr('id','some_crap').appendTo('.container')

它工作得很好。但是,如果我在 DOCUMENT READY 上运行此代码(以预加载某些项目),那么所有内容都会获得内联可见性:隐藏添加(.mybox div 及其所有子项)。

我现在的解决方法是,等待 1 秒,而不是在 dom 就绪时预加载我的项目。

setTimeout (->
    preloadOffices()
), 1000

(是的,咖啡脚本)

这似乎可以解决问题,但我想知道是否有更优雅的解决方案。

4

2 回答 2

1

.clone()不会向它克隆的对象添加任意样式值。因此,我认为这里只有两种可能的解释:

  1. 这些对象实际上是visibility: hiddendocument.ready()time 并且一些代码实际上使您的另一个对象稍后可见。 .clone()只是按原样复制对象。它不会向它们添加任意样式值。

  2. visibility: hidden克隆对象后,其他一些代码正在生成克隆对象。

如果您向我们展示您的实际页面,我们很可能会弄清楚到底发生了什么。

您可以通过单步调试代码并观察代码运行时的状态来自行调试。或者,您可以插入一些 console.log 语句来检查事物的状态。

于 2012-06-13T17:50:47.793 回答
0

试试这个代码..

//clones the div on window.load and sets attribute id
    $(window).load(function(){

    new_item = $('#template').clone();
    $(new_item).attr('id','some_crap').appendTo('.container')

    });

//on document.ready remove class

    $(function(){

    $('#some_crap').removeClass('invisible');

    });
于 2012-06-13T17:51:59.153 回答