据我所知,.prop()函数可以执行.attr()函数可以执行的所有操作,但通常更安全,更简单。
例如:
$('myCheckbox').prop('defaultChecked')
(而不是$('myCheckbox').attr('checked')
)。 这实际上似乎比使用.attr('checked')
更安全,因为如果动态更改复选框,属性可能会丢失它的值,而.prop('defaultValue')
维护值(例如http://jsfiddle.net/p1Lrgwnb/1/) .attr()
与StackOverflow示例中的id
和name
等值一致使用.prop()
,但.attr()
也可以正常使用。除了传统的惯例和习惯之外,我不知道.attr()
似乎更喜欢这些价值观。是否有一个用例我需要使用.prop()
或.prop()
函数不能提供我需要的信息?
编辑:此问题与.attr()
和 ren.label('message', 10, 10)
.attr({
fill: 'red',
stroke: 'white',
'stroke-width': 2,
padding: 5,
cursor: 'pointer',
r: 5
})
.css({
color: 'white',
width: '100px'
})
// action on click
.on('click', function () {
});
之间的区别无关。我已经深入研究了StackOverflow上的这些问题,包括下面链接的问题(stackoverflow.com/questions/5874652/prop-vs-attr)。从我的问题来看,很明显我完全理解两者之间的差异,可能比大多数人更好。我的问题是,我必须使用.attr(),这是一个完全不同的问题,来自.prop()vs .attr()。
答案 0 :(得分:3)
<input id="check1" checked="checked" type="checkbox" />
.attr('checked') //returns checked
.prop('checked') //returns true
.is(':checked') //returns true
prop方法返回checked,selected,disabled,readOnly..etc的布尔值,而attr返回已定义的字符串。因此,您可以在if条件下直接使用.prop('checked')。
.attr()在内部调用.prop(),所以.attr()方法比直接通过.prop()访问它们要慢一些。
对于jQuery 1.6+,将主要使用prop,因为它比attr简单且宽泛。在大多数旧项目中,attr用于获取元素的当前状态信息。但是现在道具已经接受了这项工作,而attr将被替换为道具。