2013-05-24 24 views
6

Ottengo lo stesso risultato da entrambi i metodi, ma non sono sicuro del perché. La ricerca su SO mi dice questo:text vs innerHTML in JQuery

.text() restituisce SOLO il testo di quell'elemento e tutti i suoi elementi discendenti, dove come .innerHTML restituisce tutto l'HTML in quell'elemento.

tuttavia, ulteriori ricerche mi dicono questo: Il vero problema è che text() e innerHTML operano su oggetti completamente diversi.

Posso ottenere qualche chiarimento?

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

Sì, .text è un metodo di una raccolta jQuery, mentre .innerHTML è un metodo di nodi html. Due cose completamente diverse. Uno è implementato dal browser, l'altro è implementato da jQuery. Ognuno ha anche scopi diversi. –

+3

aggiungi un elemento alla cella e vedrai la differenza –

risposta

6

.text() restituirà una rappresentazione in formato stringa di tutti i nodi di testo in quell'elemento mentre .html() vi darà la presentazione di tutti i nodi.