Mặc dù đây là một câu hỏi rất cũ, tôi nghĩ sẽ rất tốt nếu cập nhật nó với thông tin gần đây;
Vì jQuery 1.8 có hàm jQuery.parseHTML () hiện là cách tạo phần tử ưa thích. Ngoài ra, có một số vấn đề với việc phân tích cú pháp HTML thông qua $('(html code goes here)')
, ví dụ trang web chính thức của jQuery đề cập đến những điều sau đây trong một trong các ghi chú phát hành của họ :
Phân tích cú pháp HTML thư giãn: Một lần nữa bạn có thể có các khoảng trắng hoặc dòng mới hàng đầu trước các thẻ trong $ (htmlString). Chúng tôi vẫn khuyên bạn nên sử dụng $ .parseHTML () khi phân tích cú pháp HTML thu được từ các nguồn bên ngoài và có thể thực hiện thêm các thay đổi đối với phân tích cú pháp HTML trong tương lai.
Để liên quan đến câu hỏi thực tế, ví dụ được cung cấp có thể được dịch thành:
this.$OuterDiv = $($.parseHTML('<div></div>'))
.hide()
.append($($.parseHTML('<table></table>'))
.attr({ cellSpacing : 0 })
.addClass("text")
)
;
Thật không may, ít thuận tiện hơn so với chỉ sử dụng $()
, nhưng nó mang lại cho bạn nhiều quyền kiểm soát hơn, ví dụ bạn có thể chọn loại trừ các thẻ script ( onclick
mặc dù vậy nó sẽ để lại các tập lệnh nội tuyến như sau ):
> $.parseHTML('<div onclick="a"></div><script></script>')
[<div onclick="a"></div>]
> $.parseHTML('<div onclick="a"></div><script></script>', document, true)
[<div onclick="a"></div>, <script></script>]
Ngoài ra, đây là một điểm chuẩn từ câu trả lời hàng đầu được điều chỉnh theo thực tế mới:
Liên kết JSbin
jQuery 1.9.1
$ .parseHTML: 88ms
$ ($. ParseHTML): 240ms
<div> </ div>: 138ms
<div>: 143ms
tạoEuity: 64ms
Có vẻ như parseHTML
gần createElement
hơn nhiều so với $()
, nhưng tất cả sự tăng cường đã biến mất sau khi gói các kết quả trong một đối tượng jQuery mới