2009-12-03 36 views

Trả lời

29

innerText (hoặc text() nếu bạn đang sử dụng jQuery) không bao gồm bất kỳ thẻ HTML nào. Vì vậy, nếu bạn đã có một div chứa:

View my <a href="profile.html">profile</a> 

innerText/text() sẽ trở

View my profile 

khi html() sẽ trở

View my <a href="profile.html">profile</a> 

Như dcneiner chỉ ra html()/text() là tài sản jQuery (và được hỗ trợ trên các trình duyệt) trong khi innerText không được thực hiện bởi tất cả các trình duyệt (mặc dù tôi t hoạt động trong các phiên bản mới nhất của IE, Safari và Chrome).

Về cơ bản, bạn sẽ muốn sử dụng text() isntead của innerText bất cứ khi nào có thể. Xem dcneiner's post (hoặc jQuery docs) đối với một số thứ khác khiến cho việc này trở nên tuyệt vời hơn text().

+5

Thực tế là 'innerText' là thuộc tính duy nhất của IE và không liên quan gì đến jQuery có nghĩa là gì? :) –

+0

Ví dụ tuyệt vời Chris. +1 –

+0

Điểm cực tốt dcneiner, cập nhật bài đăng để phản ánh điều đó :). –

11

Sự khác biệt là innerText là thuộc tính chỉ có trên IE đối tượng DOM và html() là một chức năng của đối tượng jQuery.

Tuy nhiên, nếu bạn so sánh text()html() thì sự khác biệt là text() tách tất cả HTML khỏi nội dung của phần tử trước khi quay trở lại và html() bao gồm HTML.

Bên cạnh đó, text() sẽ trở lại với nội dung của tất cả yếu tố phù hợp và nối chúng lại với nhau:

<span>Hi, </span><span>how are </span><span>you?</span> 

$("span").text(); // returns: Hi, how are you? 

Nhưng html() sẽ chỉ trả lại các mặt hàng phù hợp đầu tiên innerHTML tài sản:

$("span").html(); // returns: Hi, 

Một cuối cùng điều thú vị, là tự động thoát khỏi tất cả HTML:

$("span:first").text('<a>Hi</a>'); // writes &lt;a&gt;Hi&lt;/a&gt; 
Các vấn đề liên quan