Tôi nhận thấy rằng câu trả lời đầu tiên không hoàn toàn là những gì tôi cần, vì vậy tôi đã thực hiện một vài sửa đổi và hình dung tôi sẽ đăng nó trở lại đây.
Cải thiện replaceTag(<tagName>)
replaceTag(<tagName>, [withDataAndEvents], [withDataAndEvents])
Tranh luận:
- tagName: Chuỗi
- Tên thẻ ví dụ: "div", "span", v.v.
- withDataAndEvents: Boolean
- "Boolean cho biết liệu trình xử lý sự kiện có nên được sao chép cùng với các phần tử hay không. Kể từ jQuery 1.4, dữ liệu phần tử cũng sẽ được sao chép." thông tin
- deepWithDataAndEvents: Boolean ,
- Boolean cho biết liệu trình xử lý sự kiện và dữ liệu cho tất cả con của phần tử nhân bản có nên được sao chép hay không. Theo mặc định, giá trị của nó khớp với giá trị của đối số đầu tiên (mặc định là sai). " Thông tin
Trả về:
Một phần tử jQuery mới được tạo
Được rồi, tôi biết có một vài câu trả lời ở đây bây giờ, nhưng tôi đã tự mình viết nó để viết lại.
Ở đây chúng ta có thể thay thế thẻ giống như cách chúng ta sử dụng nhân bản. Chúng tôi đang theo cùng một cú pháp như .clone () với withDataAndEvents
và deepWithDataAndEvents
sao chép dữ liệu và sự kiện của các nút con nếu được sử dụng.
Thí dụ:
$tableRow.find("td").each(function() {
$(this).clone().replaceTag("li").appendTo("ul#table-row-as-list");
});
Nguồn:
$.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);
})
}
})
Lưu ý rằng điều này không thay thế phần tử đã chọn, nó trả về phần tử mới được tạo.