Fly*_*San 9 html javascript jquery
如果你删除了一些你应该使用removeAttr的东西,它会无声地失败吗?它会起作用吗?它会实际删除整个属性还是仅删除其中的值?
如果使用prop()添加'checked',是否可以使用removeAttr删除它?
许多问题!
在官方的jQuery博客提供了一个非常明确的解释:
在1.6版本中,我们将DOM属性和DOM属性的处理拆分为单独的方法.新的.prop()方法设置或获取DOM元素的属性,而.removeProp()删除属性.在过去,jQuery没有在属性和属性之间划清界限.通常,DOM属性表示从文档中检索的DOM信息的状态,例如标记中的value属性.DOM属性表示文档的动态状态; 例如,如果用户点击上面的输入元素并且类型def
.prop("value")是abcdef但是.attr("value")遗骸abc.在大多数情况下,浏览器将属性值视为属性的起始值,但是诸如checked或disabled之类的布尔属性具有异常语义.
例如,考虑标记
<input type="checkbox" checked>.checked属性的存在意味着DOM.checked属性为true,即使该属性没有值.在上面的代码中,checked属性值是一个空字符串(或者undefined如果没有指定属性),但是checked属性值是true.在jQuery 1.6之前,
.attr("checked")返回了布尔属性value(true),但是从jQuery 1.6开始,它返回属性的实际值(空字符串),当用户单击复选框以更改其状态时,该值不会更改.有几种方法可以检查复选框的当前检查状态.最好和最高效的是直接使用DOM属性,就像在
this.checked引用单击的元素时在事件处理程序内部一样.在使用jQuery 1.6或更新版本的代码中,新方法$(this).prop("checked")检索相同的值this.checked并且相对较快.最后,该表达式$(this).is(":checked")适用于所有版本的jQuery.
元素的属性类似于“类”。而其属性为“ className”。
这就是在版本1.6中添加jQuery.prop和jQuery.propHooks的原因,以使其更易于使用。
因此,如果属性与属性具有相同的名称,则可以同时使用removeProp或removeAttr。
我在jQuery论坛上问了类似的问题,得到了这个答案:
是的,attr是用于严格定义的html属性。道具是为了属性。因此,举例来说,假设您有一个带有“ something”类的原始节点(原始元素不是jQuery对象)。elem.className是属性,但是属性所在的位置。更改class属性也会自动更改属性,反之亦然。当前,attr既混乱又混乱,因为它试图同时执行这两个功能,并且因此存在许多错误。jQuery.fn.prop的引入将解决几个阻塞问题,因为应该从一开始就分离出单独的代码,并为开发人员提供更快的功能,以实现他们期望的功能。我先占一个百分比,然后说说,根据我在支持IRC和阅读他人代码方面的经验,
编辑
最好坚持使用jQuery.attr或jQuery.prop。使用两者设置和删除选中的属性时,似乎有些奇怪的行为。
参见此处的示例:http : //jsfiddle.net/tomgrohl/uTCJF/
1.6中存在一个与所选内容有关的错误:http : //bugs.jquery.com/ticket/9079
| 归档时间: |
|
| 查看次数: |
7134 次 |
| 最近记录: |