मैंने देखा कि पहला उत्तर मुझे क्या चाहिए था, इसलिए मैंने कुछ संशोधन किए और सोचा कि मैं इसे यहाँ वापस भेज दूंगा।
उन्नत replaceTag(<tagName>)
replaceTag(<tagName>, [withDataAndEvents], [withDataAndEvents])
तर्क:
- टैगनाम: स्ट्रिंग
- टैग नाम जैसे "div", "स्पैन", आदि।
- withDataAndEvents: बूलियन
- "एक बूलियन यह दर्शाता है कि क्या ईवेंट हैंडलर को तत्वों के साथ कॉपी किया जाना चाहिए। jQuery 1.4 के रूप में, तत्व डेटा को भी कॉपी किया जाएगा।" जानकारी
- deepWithDataAndEvents: बूलियन ,
- एक बूलियन यह दर्शाता है कि क्या क्लोन किए गए तत्व के सभी बच्चों के लिए घटना हैंडलर और डेटा की प्रतिलिपि बनाई जानी चाहिए। डिफ़ॉल्ट रूप से इसका मान पहले तर्क के मूल्य से मेल खाता है (जो झूठे को परिभाषित करता है)। " जानकारी
यह दिखाता है:
एक नया बनाया गया jQuery तत्व
ठीक है, मुझे पता है कि अब यहाँ कुछ उत्तर हैं, लेकिन मैंने इसे फिर से लिखने के लिए खुद को लिया।
यहां हम टैग को उसी तरह से बदल सकते हैं जिस तरह से हम क्लोनिंग का उपयोग करते हैं। हम एक ही सिंटैक्स का पालन कर रहे हैं जैसे .clone () के साथ withDataAndEventsऔर deepWithDataAndEventsजो बच्चे के डेटा और घटनाओं का उपयोग किए जाने पर कॉपी करते हैं ।
उदाहरण:
$tableRow.find("td").each(function() {
$(this).clone().replaceTag("li").appendTo("ul#table-row-as-list");
});
स्रोत:
$.extend({
replaceTag: function (element, tagName, withDataAndEvents, deepWithDataAndEvents) {
var newTag = $("<" + tagName + ">")[0];
// From [Stackoverflow: Copy all Attributes](http://stackoverflow.com/a/6753486/2096729)
$.each(element.attributes, function() {
newTag.setAttribute(this.name, this.value);
});
$(element).children().clone(withDataAndEvents, deepWithDataAndEvents).appendTo(newTag);
return newTag;
}
})
$.fn.extend({
replaceTag: function (tagName, withDataAndEvents, deepWithDataAndEvents) {
// Use map to reconstruct the selector with newly created elements
return this.map(function() {
return jQuery.replaceTag(this, tagName, withDataAndEvents, deepWithDataAndEvents);
})
}
})
ध्यान दें कि यह चयनित तत्व को प्रतिस्थापित नहीं करता है , यह नए बनाए गए को वापस करता है।