2013-06-05 2 views
16

मैं एक पृष्ठ में एक टेक्स्टरी क्लोन कर रहा हूं लेकिन क्लोन तत्व में प्राथमिक तत्व की कोई घटना नहीं है, क्या क्लोन तत्व में सभी घटनाओं को क्लोन करने का कोई तरीका है?अपनी सभी घटनाओं के साथ क्लोन तत्व

var dupNode = node.cloneNode(deep); 
+0

का संभावित डुप्लिकेट [ईवेंट श्रोताओं के साथ एक डोम नोड की प्रतिलिपि कैसे करें?] (Http://stackoverflow.com/questions/15408394/how-to-copy-a -डोम-नोड-साथ-ईवेंट-श्रोताओं) – Nickolay

उत्तर

7

आप शायद getEventListeners नोड्स पर उपयोग कर सकते हैं? पता नहीं कैसे समर्थन है, या अगर यह केवल कंसोल में समर्थित है?

function cloneMassive(node) { 
    // Clone the node, don't clone the childNodes right now... 
    var dupNode = node.cloneNode(false); 
    var events = getEventListeners(node); 

    for(var p in events) { 
     // All events is in an array so iterate that array: 
     events[p].forEach(function(ev) { 
      // {listener: Function, useCapture: Boolean} 
      dupNode.addEventListener(p, ev.listener, ev.useCapture); 
     }); 
    } 
    // Also do the same to all childNodes and append them. 
    if (node.childNodes.length) { 
     [].slice.call(node.childNodes).forEach(function(node) { 
      dupNode.appendChild(cloneMassive(node)); 
     }); 
    } 

    return dupNode; 
} 

var dupBody = cloneMassive(document.body); 

लेकिन यह है कि वास्तव में getEventListeners समर्थित नहीं है लगता है:

Get event listeners attached to node using addEventListener


तुम भी नोड पर सभी घटना गुण कॉपी करने के लिए की जरूरत है आप सभी की एक सूची की आवश्यकता होगी, और फिर बस उन्हें कॉपी करें:

['onclick', 'onmouseover', '...'].forEach(function(method) { 
    dupNode[method] = node[method]; 
}); 
-2

मैं इस समस्या को मेरी समाधान को सुलझाने था हाल ही में और यहां तक ​​कि कि इस पुरानी पोस्ट है, बस में मामला किसी पता लगाने के लिए कोशिश कर रहा है, मैं जोड़ें: addEventListener का उपयोग करने का

var button = document.createElement("i"); 
var click = document.createAttribute("onclick"); 
click.value = "FunctionName(this)"; 
button.attributes.setNamedItem(click); 

इसके बजाय, बस समारोह बनाने FunctionName। वैसे यह बेकार है यदि आप addEventListener

+0

यह ओपी का सवाल कैसे जवाब देता है? 'StartRecorind' क्या है? 'टाइप' क्या है? – m02ph3u5

संबंधित मुद्दे