JQuery未设置'textcontent'在1.7.1版本中
JQuery not setting 'textcontent' in version 1.7.1
我有以下代码,用于设置目标,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()
则是检索属性。
例如,selectedIndex
、tagName
、nodeName
、nodeType
、ownerDocument
、defaultChecked
和defaultSelected
,应该用.prop()
方法检索和设置。在jQuery 1.6之前,这些属性可以通过.attr()
方法检索,但这不在attr的范围内。它们没有相应的属性,只是属性。
textContent
是一个DOM属性,而不是HTML属性。
在旧版本的jQuery中,如果字符串大小写与元素上的匹配属性相同,attr()
函数几乎总是映射到一个属性。这在jQuery 1.6中发生了变化(它应该是正确的),所以现在attr()
几乎完全映射到setAttribute
,并且引入了新的函数prop()
来设置包装元素的属性。
除了使用prop()
之外,您还需要确保大小写正确。JavaScript和DOM属性使用驼峰式大小写,并以小写字母开头。所以你需要使用textContent
,而不是textcontent
。
// 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
。
- jQuery-2.1.1.min.js或最新版本jQuery-2.13.min.js不会't支持'@
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- 同一HTML页面中的两个不同版本的JQuery
- 复选框“全部”不适用于Jquery DataTable 1.10.5版本
- 有没有一种方法可以使用已经过时的jquery的Filtrify和需要更高版本jquery的bootstrap
- 在同一页面中使用两个版本的jquery将返回'未定义不是函数'
- 灯箱没有't在jquery 1.9.0及以后的版本中消失
- 如何使用多个jquery版本,以便Responsive Slides.js工作
- jQuery 在 AJAX 调用中发布版本
- 在页面上加载高级jQuery版本准备就绪
- 如何以编程方式了解jQuery版本
- 如何包含多个 jquery 版本以使多个 jquery 插件工作
- 如何实现数据()的非jQuery版本
- 在同一页面中使用两个不同的jquery版本
- 是否存在jQuery元素选择库的最小化版本
- 使用jqGrid的最低jQuery版本
- 在不同的ASP.NET MVC上使用不同版本的jquery
- 包括JQuery的特定版本和插件,而不与页面冲突'的JavaScript库
- 滚动点触发的更稳定版本(jQuery/JS)
- 使用旧版本jQuery的原因