2017-07-14 4 views
-4

#first#testにコピーするシナリオは、それを実装する2つのシナリオです。複製されたオブジェクトとハードコードされたHTMLの違い

<div class="first"> 
    <div class="second">1</div> 
</div> 

<div class="test"> 
    <div>--------------</div> 
</div> 

JQUERY1:JQUERY1上

var cloner = $('.first').clone().prop({ 
    'class': 'changed_first' 
}); 
$('.test').append(cloner) 
$('.changed_first > .second').attr('class', 'changed_second'); 
$('.changed_first > .second').html('2'); 

迂回質問:内部要素のプロパティを変更するには、cloneメソッドで可能性はありますか?

JQUERY2:

$('.test').append('<div class="changed_first"><div class="changed_second">2</div></div>'); 
+0

のように行うことができますより多くの定義を必要とする非常に漠然とした用語であり、スピード、最短コード、または...の点で最高?私はそれをテストしていませんが、私は、2つ目の方法は、あなたが1つのDOMアクセス呼び出しを行うようにすることではるかに速いと仮定します。それはあまりメンテナンスではありません。 –

+0

挿入する前にクローンを変更すると、DOMを一度変更するだけで、cloneNodeは一般的にかなり高速です – adeneo

+0

https://jsfiddle.net/adeneo/vodf2ebs/ – adeneo

答えて

0

クローンを使用してあなたの第一の方法は、良いものになります。

そして、はい、それをdomにバインドする前にクローンされた要素を操作できます。

あなたがどこかにあればバインドする前にクローン化された要素に任意のIDまたはクラスにアクセスしたい場合は、「最良」の方法を尋ねる

var cloner = $('.first').clone().prop({ 
    'class': 'changed_first' 
}); 

cloner.find('#id').css('something','css-value'); 
var data_id = cloner.find('.class').attr('data-bind'); 
+0

正確な答え私が探していた、ありがとう – yogi

+0

私はまた、第一の方法は良いのですか? – yogi

+0

2番目のメソッドを使用する場合、生成されたコンテンツにDOMの既存の要素を追加するまで、jQueryを書き込むことはできません。 私が言ったように、クローンされている間、あなたは任意のCSSを与えることができますか、HTMLコードに入れる前に要素を変更することさえできます。要するに、あなたがどこにでも接続する前に、その 'cloner'変数を操作することができます。 –

関連する問題