当前位置:首页>正文

jQuery学习之prop和attr的区别 js prop和attr的区别

2023-06-25 15:24:06 互联网 未知

jQuery学习之prop和attr的区别

prop()返回的是布尔值、true/false.
attr()返回的是字符串
最好的区别是、、、在input标签中不可编辑的属性disabled或者disabled="disabled"都是可以用的
如果写的是disabled用attr()获取返回值是undefined、而用prop()不管写disabled还是disabled=disabled都会返回true

js prop和attr的区别

attr用来设置普通属性,prop用来设置选中属性,例如checked之类的

prop() 方法设置或返回被选元素的属性和值。
当该方法用于返回属性值时,则返回第一个匹配元素的值。
当该方法用于设置属性值时,则为匹配元素集合设置一个或多个属性/值对。
注意:prop() 方法应该用于检索属性值,例如 DOM 属性(如 selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked, 和 defaultSelected)。
提示:如需检索 HTML 属性,请使用 attr() 方法代替。
提示:如需移除属性,请使用 removeProp() 方法。

jQuery 中 attr 和 prop 方法的区别

有的浏览器只要写disabled,checked就可以了,而有的要写成disabled ="disabled",checked="checked",比如用attr("checked")获取checkbox的checked属性时选中的时候可以取到值,值为"checked"但没选中获取值就是undefined。
      jq提供新的方法“prop”来获取这些属性,就是来解决这个问题的,以前我们使用attr获取checked属性时返回"checked"和"",现在使用prop方法获取属性则统一返回true和false。
那么,什么时候使用attr(),什么时候使用prop()?
1.添加属性名称该属性就会生效应该使用prop()
2.是有true,false两个属性使用prop()
3.其他则使用attr()
以下是官方建议attr(),prop()的使用:

jquery中attr和prop的区别

jQuery的 .attr() 方法得到了一个元素的属性值主要有两个好处:
方便:它可以直接被jQuery对象访问并且链式调用其他jQuery方法。
浏览器兼容:一些属性在不同浏览器中得到不同的值。 甚至在同一个浏览器的不同版本中。 .attr() 方法减少了兼容性问题。
注意: 除少数属性意外,属性值都是字符串,如value和tabindex。
在jQuery 1.6中,当属性没有被设置时候,.attr()方法将返回undefined。另外,.attr()不应该用在普通的对象,数组,窗口(window)或文件(document)上。若要检索和更改DOM属性,比如元素的checked, selected, 或disabled状态,请使用.prop()方法。
Attributes vs. Properties
attributes和properties之间的差异在特定情况下是很重要。jQuery 1.6之前 ,.attr()方法在取某些 attribute 的值时,会返回 property 的值,这就导致了结果的不一致。从 jQuery 1.6 开始, .prop()方法 方法返回 property 的值,而.attr() 方法返回 attributes 的值。
例如, selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked, 和 defaultSelected应使用.prop()方法进行取值或赋值。 在jQuery1.6之前,这些属性使用.attr()方法取得,但是这并不是元素的attr属性。他们没有相应的属性(attributes),只有特性(property)。

思考jquery属性操作下的prop和attr的区别和联系

举个简单的例子
取值

prop(checked) //false 布尔值
attr(checked) //undefind 获取的是字符串

赋值

prop(new-attr,true)
attr(new-attr,true)
再次获取的
prop还是布尔值
attr还是字符串

JS中attr和prop属性的区别

window或document中使用.attr()方法在jQuery1.6中不能正常运行,因为window和document中不能有attributes。它们包含properties(比如:location或readyState),必须使用.prop()方法操作或简单地使用javascript原生的方法。 在jQuery1.6.1中,window和document中使用.attr()将被自动转成使用.prop(还没试过)。其次,checked,selected和前面提到的其它boolean attributes,因为这些attributes和其相应的properties之间的特殊关系而被特殊对待。通常,attribute 就是以下html代码中看到的,如:

             
  但它仅表示checked属性在页面加载的时候被设置成默认值或初始值,而不管checkbox元素是否被选中。 而通常 properties 是一个浏览器用来记录当前属性值的东西。正常情况下,properties反映它们相应的attributes。

  所以,当用户点击一个checkbox元素或选中一个select元素的一个option时,使得properties保持最新,但对应的attributes却不一定,它仅被浏览器用来保存该属性的初始值。

 一个例子:



重置

jQ代码
$("#reSet").click(function() {
  $("input[name=sex]:first").attr("checked",true)
})但这样写火狐浏览器不支持,

    添加属性名称该属性就会生效应该使用.prop()
$("input[name=sex]:first").prop("checked",true) //改成prop就成功了

    区别在于selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked, 以及defaultSelected 等属性需用.prop()方法。  添加属性名称该属性就会生效应该使用.prop()