JQuery未设置'textcontent'在1.7.1版本中

JQuery not setting 'textcontent' in version 1.7.1

本文关键字:版本 JQuery textcontent 设置      更新时间:2023-09-26

我有以下代码,用于设置目标,href &在HTML中,这在JQuery 1.4.1中工作得非常好&1.5.1,但更新到1.7.1后,它不改变'textcontent'属性的可见元素,href已更新。

 $("#uriEmma").attr('textcontent', emmaUri);
 $("#uriEmma").attr('href', emmaUri);
 $("#uriEmma").attr('target', '_blank');

知道为什么会这样吗?

您应该使用.prop()和适当的大小写:textContent。示例

从文档:

属性和属性之间的区别在具体的情况。在jQuery 1.6之前,.attr()方法有时在检索某些属性时考虑了属性值,这可能导致不一致的行为。从jQuery 1.6开始,.prop()方法提供了显式检索属性值的方法,而.attr()检索属性。

.prop( propertyName )

属性和属性之间的区别在特定情况下可能很重要。在jQuery 1.6之前, .attr()方法在检索某些属性时有时会考虑属性值,这可能导致不一致的行为。从jQuery 1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()则是检索属性。

例如,selectedIndextagNamenodeNamenodeTypeownerDocumentdefaultCheckeddefaultSelected,应该用.prop()方法检索和设置。在jQuery 1.6之前,这些属性可以通过.attr()方法检索,但这不在attr的范围内。它们没有相应的属性,只是属性。

textContent是一个DOM属性,而不是HTML属性。

在旧版本的jQuery中,如果字符串大小写与元素上的匹配属性相同,attr()函数几乎总是映射到一个属性。这在jQuery 1.6中发生了变化(它应该是正确的),所以现在attr()几乎完全映射到setAttribute,并且引入了新的函数prop()来设置包装元素的属性。

除了使用prop()之外,您还需要确保大小写正确。JavaScript和DOM属性使用驼峰式大小写,并以小写字母开头。所以你需要使用textContent,而不是textcontent

以下是在jQuery 1.6+中设置属性的几种方法:
// Set the first element's `textContent`
$("#someEl")[0].textContent = "test";
// Set every element's textContent
$("#someEl").prop('textContent', "test");
// Set every element's text, mapping to innerText in older browsers:
$("#someEl").text("test");

nb如果你想支持ie8及以下版本,你需要使用text()或有一个合适的测试使用innerText代替textContent