在jQuery中,text()和innerHTML之间有什么区别?

时间:2011-10-10 12:58:18

标签: javascript jquery

我有div元素并在其中包含text / string,然后我尝试迭代它们,text()不起作用,但innerHTML工作正常。

var arr = $('div.elm');
$.each(arr, function(i,j){
    alert(j.text()); // it's not working

    console.log(j.text()); // nothing's in log

    alert(j.innerHTML); // works fine!
});

4 个答案:

答案 0 :(得分:4)

text()是一个jQuery方法,innerHTML是一个DOM元素属性。

当你在jQuery对象上调用$.each时,你收到的第二个参数(元素)将是一个DOM元素,而不是一个jQuery对象。

  • jQuery text()方法类似于在HTML元素上调用innerText / textContent
  • jQuery html()方法类似于在HTML元素上调用innerHTML

如果要对each传入的参数使用jQuery方法,则必须将其包装在jQuery对象中:

$.each(arr, function(i,j){
    alert($(j).text());
});

答案 1 :(得分:2)

在您的情况下,您应该将对象包装在jQuery对象中以使用text()方法:

$.each(arr, function(i,j){
    alert($(j).text()); 

    console.log($(j).text()); 

    alert(j.innerHTML); 
});

innerHTML是元素属性。

答案 2 :(得分:1)

http://api.jquery.com/text/

  

与.html()方法不同,.text()可以在XML和HTML中使用   文档。 .text()方法的结果是一个字符串,其中包含   所有匹配元素的组合文字。 (由于HTML的变化   在不同浏览器中的解析器,返回的文本可能在换行符中有所不同   和其他白色空间。)

答案 3 :(得分:1)

.text()返回该元素及其所有后代元素的文本,其中.innerHTML返回该元素中的所有HTML。