هل من الممكن استنساخ عنصر html الكائنات في جافا سكريبت / مسج?

StackOverflow https://stackoverflow.com/questions/921290

سؤال

أنا أبحث عن بعض النصائح حول كيفية حل المشكلة.

لدي عنصر html (مثل تحديد مربع حقل الإدخال) في الجدول.الآن أريد أن نسخ الكائن توليد جديدة في واحدة من نسخ ، مع جافا سكريبت أو مسج.أعتقد أن هذا يجب أن تعمل بطريقة أو بأخرى ولكن أنا قليلا جاهل في هذه اللحظة.

شيء من هذا القبيل (البرمجية الزائفة):

oldDdl = $("#ddl_1").get(); 

newDdl = oldDdl;

oldDdl.attr('id', newId);

oldDdl.html();
هل كانت مفيدة؟

المحلول

استخدام الكود الخاص بك يمكنك القيام بشيء مثل هذا في جافا سكريبت عادي باستخدام كلونينود () طريقة:

// Create a clone of element with id ddl_1:
let clone = document.querySelector('#ddl_1').cloneNode( true );

// Change the id attribute of the newly created element:
clone.setAttribute( 'id', newId );

// Append the newly created element on element p 
document.querySelector('p').appendChild( clone );

أو باستخدام jQuery. استنساخ () الطريقة (وليس الأكثر كفاءة):

$('#ddl_1').clone().attr('id', newId).appendTo('p'); // append to where you want

نصائح أخرى

مع جافا سكريبت الأصلي:

newelement = element.cloneNode(bool)

حيث يشير المنطقي إلى ما إذا كنت تريد استنساخ العقد الطفل أم لا.

فيما يلي الوثائق الكاملة على MDN.

نعم، يمكنك نسخ الأطفال من عنصر واحد ولصقهم في العنصر الآخر:

var foo1 = jQuery('#foo1');
var foo2 = jQuery('#foo2');

foo1.html(foo2.children().clone());

دليل: http://jsfiddle.net/de9kc/

انها في الواقع سهلة للغاية في مسج:

$("#ddl_1").clone().attr("id",newId).appendTo("body");

التغيير .Appendto () بالطبع ...

يمكنك استخدام استنساخ() طريقة إنشاء نسخة..

$('#foo1').html( $('#foo2 > div').clone())​;

كمان هنا

جرب هذا:

$('#foo1').html($('#foo2').children().clone());

في خط واحد:

$('#selector').clone().attr('id','newid').appendTo('#newPlace');

تحتاج إلى تحديد "#foo2" كما محدد.ثم الحصول عليه مع html().

هنا هو html:

<div id="foo1">

</div>
<div id="foo2">
    <div>Foo Here</div>
</div>​

هنا هو جافا سكريبت:

$("#foo2").click(function() {
    //alert("clicked");
    var value=$(this).html();
    $("#foo1").html(value);
});​

هنا هو jsfiddle: http://jsfiddle.net/fritzdenim/DhCjf/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top