$(this).text() vs $(this).attr("innerText") in Chr

$(this).text() vs $(this).attr("innerText") in Chrome

本文关键字:quot this Chr innerText in attr text vs      更新时间:2023-09-26

我是jQuery和javascript的核心,所以这一定是一个初学者的问题。

这行对我有效,foo不是空的:

var foo = $("#hello").find("option").filter (function(){return $(this).text() == "BAR";});

同一地点的这个没有(foo未定义(:

var foo = $("#hello").find("option").filter (function(){return $(this).attr("innerText") == "BAR";});

唯一的区别是使用.text((和.attr("innerText"(。为什么后者对我不起作用?

.attr()查找附加到DOM元素的HTML属性,而不是查找DOM元素的JavaScript属性,如innerHTMLinnerText。要找到这样的属性,您需要访问选择器返回的jQuery对象中的DOM元素,或者在本例中访问this引用本身,例如:

var foo = $('#hello').find("option").filter (function(){return this.innerText == “BAR";});

正如其他人所指出的,这是不建议的,因为它可能会导致意外行为,而且它也不兼容跨浏览器。只需使用.text()即可。

.attr()正在节点上查找属性innerText。它会给你undefined,除非你的节点看起来像:

<div innerText="test"></div>

也许你把自己和.prop('innerText')混合在一起,得到了节点的属性innerText。这与.text()相同,只是由于jQuery计数器兼容性问题,.text()更安全。。

如果您对jQuery如何获取文本感兴趣,无论您是哪种浏览器,这里都有相关的代码