về mặt kỹ thuật $('<element></element>')
là chính xác hơn, vì thẻ đóng tự động sử dụng /
đã bị xóa trong HTML5, vì câu lệnh đó được phân tích bởi jQuery. Nếu bất cứ điều gì, chỉ cần sử dụng $('<element>')
có thể thực sự nhanh hơn một chút, vì ít ký tự hơn để đọc. Mà nên bỏ qua một số điều kiện Regex là tốt.
Hơn thế nữa, nếu bạn đang tìm kiếm nhanh nhất thể cách sử dụng jQuery:
var temp = new jQuery.fn.init();
temp[0] = document.createElement('element');
temp.length = 1;
Phiên bản này là nhanh nhất, bởi vì nó bỏ qua jQuery()
mà kết thúc tốt đẹp "jQuery.fn.init mới()" và không chuyển đối số để nó ngay lập tức trả về một đối tượng jQuery mới. Nó bỏ qua rất nhiều điều kiện và báo cáo không an toàn, đó là không cần thiết nếu bạn đã biết chính xác những gì bạn đang cố gắng làm.
Hoặc hơi ngắn hơn:
var temp = $(document.createElement('element'));
Phiên bản này là hơi chậm, nhưng dễ dàng hơn để đọc, và một gọn gàng rất nhiều. Nó vẫn bỏ qua một đoạn mã lớn được sử dụng để phân tích cú pháp, chuỗi sẽ được truyền đi. Thay vào đó, jQuery có thể tự động biết chúng ta đang làm việc với một nút ở đây.
Reference
HTML5 Does NOT Allow “Self-Closing” Tags
Google: html5 self closing tags
jsperf
và tại sao bạn không thể sử dụng 'document.createElement ('tố')'? Có luật nào buộc bạn viết mã chậm nhất có thể không? –
@ tereško Trừ khi bạn điểm chuẩn rằng đoạn mã này là một nút cổ chai trong ứng dụng của bạn, hiệu suất không phải là yếu tố chính trong lựa chọn này. Tôi mong đợi sự khác biệt về hiệu năng chỉ có liên quan trong các vòng lặp chặt chẽ. Nhưng khá rõ ràng và nhất quán của mã. Nếu bạn sử dụng jquery ở hầu hết các nơi, không có lý do gì để sử dụng DOM ở đây, và nếu bạn chủ yếu sử dụng DOM, không có lý do gì để sử dụng jquery cho việc này. – CodesInChaos
@ tereško +1 ... chi phí tạo đối tượng + chi phí phân tích chuỗi + chi phí của nhiều điều kiện + chi phí của mẫu thiết kế điên = hóa đơn jQuery. – Shea