HTML:
<form class="form">
<input type="checkbox" id="box" /> Check Me!
</form>
JS:
$( window ).load( function() {
var myFunc = function() {
if( $( '#box' ).prop( 'checked', false ) ) {
$( '.form' ).append( '<p>Checkbox is not checked.</p>' );
}
}
$( '#box' ).on( 'change', myFunc );
} );
这是一个JSFiddle http://jsfiddle.net/3PYm7/
当我使用$( '#box' ).prop( 'checked', false )
作为if
语句的条件时,它不起作用,但! $( '#box' ).prop( 'checked' )
效果很好!
答案 0 :(得分:21)
语句$('#box').prop('checked', false)
不返回布尔值,而是将checked属性设置为false,因此不应在条件中使用并且正常行为
if($('#box').prop('checked', false))
可以使用is()
选择器{/ 1}}进行测试。
:checked
或
if($('#box').is(':checked'))
您可以使用原生javascript
获得最佳效果if($('#box:checked').length)
您提到的工作语句if(document.getElementById('box').checked)
将返回已检查的属性值,而不是设置。
答案 1 :(得分:4)
if ($('#box').prop('checked')==false) {
$('.form').append('<p>Checkbox is not checked.</p>');
}
答案 2 :(得分:2)
$('#box').prop('checked', false)
是一个setter版本,它将返回已调用.prop()
方法的元素,而不是布尔结果。您应该使用getter版本来获取布尔值$('#box').prop('checked')
请在此处了解有关.prop(property)
答案 3 :(得分:2)
试试这个
if($('#box').is(':checked')) // this will return true or false
答案 4 :(得分:2)
与使用setter which does not return a boolean测试资产相比,您遇到的问题更多。
修复后,您的代码将在每次取消选中时附加消息。
我建议这个
$(function() {
$('#myform').on("submit", function(e) {
var checked = $('#box').is(":checked");
$('#pleaseCheckBoxMessage').toggle(!checked);
if (!checked) {
e.preventDefault(); // stop submission
}
});
$("#box").on("click",function() {
$('#pleaseCheckBoxMessage').toggle(!this.checked);
});
});
答案 5 :(得分:0)
尝试这样。这也是检查
的另一种方法if (!$('#box').prop('checked')) {
$('.form').append('<p>Checkbox is not checked.</p>');
}
$('#box').prop('checked')
复选框更改后,它将返回true或false
答案 6 :(得分:0)
这是jQuery的一个普遍问题,我的想法是通过jQuery获取和设置一个值具有相同的函数名称,但这对新手来说非常混乱。
例如.val(&#39; bla&#39;)设置值bla但是.val()返回当前值...这对于attr,prop,...和它们中的每一个几乎相同有一个StackOverflow问题,因为有人不明白它应该如何工作。如果它被称为getProp,setProp,这些问题将不存在。