我想不通这个问题。根据W3 Schools的说法,checked属性设置或返回复选框的选中状态。
那么为什么$('input').checked ? $('div').slideDown() : $('div').slideUp();
不能起作用呢?
然而,使用prop就可以了。
$('input').prop('checked') ? $('div').slideDown() : $('div').slideUp();
这是一个基于数据库值选中复选框的示例。
我想不通这个问题。根据W3 Schools的说法,checked属性设置或返回复选框的选中状态。
那么为什么$('input').checked ? $('div').slideDown() : $('div').slideUp();
不能起作用呢?
然而,使用prop就可以了。
$('input').prop('checked') ? $('div').slideDown() : $('div').slideUp();
这是一个基于数据库值选中复选框的示例。
checked
是一个 DOM 元素属性,因此应该在 DOM 元素上使用它,而不是 jQuery 对象。
$('input')[0].checked
prop
而不是attr
,因为您正在检查属性。只是作为参考:$("<input type='checkbox' checked='checked'>").attr("checked") // "checked"
$("<input type='checkbox' checked='foo'>").attr("checked") // "checked"
$("<input type='checkbox' checked>").attr("checked") // "checked"
$("<input type='checkbox'>").attr("checked") // undefined
[0].getAttribute("checked")
将返回实际值。
prop
将根据属性是否存在返回true
或false
。attr
还是 $('input')[0].getAttribute('checked')
? - RobGchecked
是一个糟糕的例子,因为值并不重要 - 它是一个布尔属性。 - DennisgetAttribute
。 - Blenderattr
一直存在问题,只是在胡闹。jQuery的错误在于试图使属性等同于属性。 - RobGattr
和 [0].checked
时会有差异?
当我使用 [0].checked = true
时,复选框被选中了,但是当我尝试通过 removeAttr
取消选中后三次使用 attr("checked","checked")
,我发现第三次复选框没有被选中,但我跟踪了对象,发现 checked="checked"
存在,但 checked=false
也存在。 - Ankit Sharmaprop()
而不是attr()
,在代码中将attr()
调用替换为prop()
通常会起作用。.attr()
方法有时会考虑属性值,这可能导致不一致的行为。从jQuery 1.6开始,.prop()
方法提供了一种显式检索属性值的方法,而.attr()
检索属性。
elem.checked
==== true(布尔值)
,将随复选框状态而改变
$(elem).prop("checked")
==== true(布尔值)
,将随复选框状态而改变
elem.getAttribute("checked")
====="checked" (字符串)
复选框的初始状态;不会改变
$(elem).attr("checked") (1.6)
====="checked" (字符串)
复选框的初始状态;不会改变
$(elem).attr("checked") (1.6.1+)
========"checked" (字符串)
将随复选框状态而改变
$(elem).attr("checked") (pre-1.6)
=======true (布尔值)
随复选框状态改变
此外,此网址可以帮助您更多地了解您的查询.prop() vs .attr()
http://jsperf.com/is-checked-vs-attr-checked-checked/7上的差异/is-checked-vs-attr-checked-checked/7
此外,了解元素属性和属性
的含义,请参考http://christierney.com/2011/05/06/understanding-jquery-1-6s-dom-attribute-and-properties/和http://jsperf.com/is-checked-vs-attr-checked-checked/7。
checked
是 DOM 对象的属性,而非 jQuery 对象的属性。要使其起作用,您需要获取 DOM 对象:
$('input')[0].checked;
.is(':checked')
来实现。$('input') 返回一个 JQuery 对象,它没有 checked 属性。您可以使用 $('input')[0].checked。
$('input').attr('checked')
已经过时,应该使用$('input').prop('checked')
此外,$('input').checked
不起作用,因为$('input')
是jquery对象,而checked
是属性,所以jquery推出了$('input').prop('checked')
来访问属性。
但是要将jQuery对象转换为DOM对象,您需要执行以下操作:
$('input')[0].checked
这将成为DOM对象,然后您可以直接使用.
访问属性。
但是使用jquery访问属性应该使用这个:
$('input').prop('checked') ? $('div').slideDown() : $('div').slideUp();