/ / घटना प्रतिनिधिमंडल के साथ समस्या - जावास्क्रिप्ट, एचटीएमएल

घटना प्रतिनिधिमंडल के साथ समस्या - जावास्क्रिप्ट, एचटीएमएल

तालिका में एक बार एक टेबल क्लोन करने की कोशिश कर रहा हूंजनसंख्या रही है। टीडी के अंदर मैंने कुछ इनपुट और टेक्स्टरेरा टैग रखे। मेरी समस्या यह है कि तालिका के अंदर की सामग्री को क्लोन नहीं किया जाता है। मैंने घटना प्रतिनिधिमंडल का उपयोग करने की कोशिश की है, लेकिन ऐसा लगता है कि मैं कुछ गलत कर रहा हूं। जेएसफिल्ड यहां है, टेबल के अंदर कुछ लिखें और फिर क्लोन दबाएं।'` http://jsfiddle.net/no84bror/2/

  $("#clonetable").on("click","textarea",function(){
var tempTable = $("#masterTable");
var temClone = $("<div/>").append(tempTable.clone()).html();
// alert(temClone);
var rep = temClone.replace("textarea","p");
$("#a").html(rep);
});

उत्तर:

जवाब के लिए 0 № 1

यह एक jquery बग है - गहरी क्लोनिंग textareas के लिए काम नहीं करता है http://bugs.jquery.com/ticket/3016 यह फ़ायरफ़ॉक्स में एक समस्या के रूप में शुरू हुआ लेकिन जाहिर है, क्रोम में भी यही है।

"वर्तमान व्यवहार api.jquery पर दस्तावेज है।कॉम और निश्चित रूप से यहाँ। अनुरोधित व्यवहार प्रदान करने के लिए एक प्लगइन उपलब्ध है। टिकट को पैचवैलकम चिह्नित किया गया है, जिसमें jQuery के अंदर इस किनारे के मामले को ठीक करने वाली चेतावनी के कारण 90% समय के लिए एक प्रदर्शन हिट होता है जब इसकी आवश्यकता नहीं होती है।

निम्न कोड काम करता है और इनपुट फ़ील्ड की सामग्री की प्रतिलिपि बनाता है, लेकिन उपर्युक्त बग के कारण आपको खुद को टेक्स्टरीज़ की सामग्री कॉपी करना होगा या प्लगइन का उपयोग करना होगा।

$("#clonetable").on("click", function(){
$("#a").html($("#masterTable").clone());
});

आप उपयोग करने का प्रयास कर सकते हैं .clone( [withDataAndEvents][, deepWithDataAndEvents] ), दूसरे शब्दों का उपयोग कर .clone(true, true), लेकिन इससे कोई फर्क नहीं पड़ता।


यहां टेक्स्ट कोड सामग्री की प्रतिलिपि बनाने के लिए हैक समेत कोड है:

 $("#clonetable").on("click",function(){
$("#a").html($("#masterTable").clone());
var my_textareas     = $("#masterTable textarea").slice(2,4);
var result_textareas = $("#a textarea");

for (var i = 0, l = my_textareas.length; i < l; ++i){
$(result_textareas[i]).val($(my_textareas[i]).val());
}
});