我无法想出这个。根据{{3}}, checked属性设置或返回复选框的选中状态。
那么为什么$('input').checked ? $('div').slideDown() : $('div').slideUp();
不起作用?
然而,使用道具确实有用。
$('input').prop('checked') ? $('div').slideDown() : $('div').slideUp();
这是针对根据数据库值检查的复选框。
答案 0 :(得分:11)
checked
是一个DOM元素属性,因此在DOM元素而不是jQuery对象上使用它。
$('input')[0].checked
如果您有jQuery对象,请使用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
答案 1 :(得分:4)
checked
是DOM对象的属性,而不是jQuery对象的属性。要使其工作,您必须获取DOM对象:
$('input')[0].checked;
你也可以.is(':checked')
。
答案 2 :(得分:4)
在这种情况下,您需要prop()
而不是attr()
,
用代码中的attr()
替换prop()
来电通常会有效。
来自 http://blog.jquery.com/2011/05/10/jquery-1-6-1-rc-1-released/
在特定情况下,属性和属性之间的差异非常重要。 在jQuery 1.6 之前,.attr()
方法在检索某些属性时有时会考虑属性值,这可能会导致行为不一致。 从jQuery 1.6 开始,.prop()
方法提供了一种显式检索属性值的方法,而.attr()
则检索属性。
elem.checked
==== true (Boolean)
将随复选框状态更改
$(elem).prop("checked")
==== true (Boolean)
将随复选框状态更改
elem.getAttribute("checked")
===== "checked" (String)
复选框的初始状态;不会改变
$(elem).attr("checked") (1.6)
===== "checked" (String)
复选框的初始状态;不会改变
$(elem).attr("checked") (1.6.1+)
======== "checked" (String)
将随复选框状态更改
$(elem).attr("checked") (pre-1.6)
======= true (Boolean)
已更改为复选框状态
此网址还可以帮助您更多地了解您的查询.prop() vs .attr()
http://jsperf.com/is-checked-vs-attr-checked-checked/7
上/is-checked-vs-attr-checked-checked/7
的差异
另外要了解The elements atttribute and properties
,请参阅http://christierney.com/2011/05/06/understanding-jquery-1-6s-dom-attribute-and-properties/
http://jsperf.com/is-checked-vs-attr-checked-checked/7
答案 3 :(得分:0)
$('input')返回一个JQuery对象,它没有checked属性。你可以使用$('input')[0] .checked。
答案 4 :(得分:0)
$('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();
希望这会有所帮助!!