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で実行すると(一部のアイテムをプリロードするため)、すべてがインラインで表示されます。hiddenadded(.mybox divとそのすべての子)。

今のところ私の回避策は、アイテムをdom readyにプリロードする代わりに、1秒待つことです。

setTimeout (->
    preloadOffices()
), 1000

(はい、コーヒースクリプト)

それでうまくいくようですが、もっとエレガントな解決策があるのではないかと思います。

4

2 に答える 2

1

.clone()クローンするオブジェクトに任意のスタイル値を追加しません。そのため、ここには2つの可能な説明しかないと思います。

  1. オブジェクトは実際にvisibility: hiddendocument.ready()その時点にあり、一部のコードは実際に他のオブジェクトを後で見えるようにしています。 .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 に答える