我有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!
});
答案 0 :(得分:4)
text()
是一个jQuery方法,innerHTML
是一个DOM元素属性。
当你在jQuery对象上调用$.each
时,你收到的第二个参数(元素)将是一个DOM元素,而不是一个jQuery对象。
如果要对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)
与.html()方法不同,.text()可以在XML和HTML中使用 文档。 .text()方法的结果是一个字符串,其中包含 所有匹配元素的组合文字。 (由于HTML的变化 在不同浏览器中的解析器,返回的文本可能在换行符中有所不同 和其他白色空间。)
答案 3 :(得分:1)
.text()
返回该元素及其所有后代元素的文本,其中.innerHTML
返回该元素中的所有HTML。