2013-05-24 9 views
6

Otrzymuję taki sam wynik z obu metod, ale nie wiem dlaczego. Badanie SO mówi mi:tekst vs innerHTML w JQuery

.text() zwraca TYLKO tekst tego elementu i wszystkie jego elementy potomne, gdzie jako .innerHTML zwraca cały kod HTML w tym elemencie.

Jednak dalsze badania mówią mi o tym: Prawdziwym problemem jest to, że text() i innerHTML działają na zupełnie innych obiektach.

Czy mogę uzyskać wyjaśnienie?

HTML

<table id="table2"> 
<th> Col1 </th> 
<th> Col2 </th> 
<tbody> 
<tr> 
<td id="data">456</td> 
</tr> 
</tbody> 
</table> 

JQuery

$('td').click(function() { 
    var x=$(this).text(); 
    alert(x); //returns '456' 
}) 

var abc = document.getElementById('data'); 
var xyz = abc.innerHTML; 
    alert(xyz); //also returns '456' 
+0

Tak, .text jest metodą kolekcji jQuery, a .innerHTML jest metodą węzłów html. Dwie zupełnie różne rzeczy. Jedna jest implementowana przez przeglądarkę, druga jest implementowana przez jQuery. Każda z nich ma różne cele. –

+3

dodaj element do komórki, a zobaczysz różnicę –

Odpowiedz

6

.text() zwróci ciąg znaków reprezentujący wszystkich węzłów tekstowych w tym elemencie podczas .html() daje prezentację wszystkich węzłach.