我在 JS 中有这段代码:
if($('.log input:checked'))
{
alert('login checked');
alert('do what you want');
}
else
{
alert('login not checked');
alert('you can not do what you want');
}
但它不能正常工作。IF ELSE 条件是否错误?
我在 JS 中有这段代码:
if($('.log input:checked'))
{
alert('login checked');
alert('do what you want');
}
else
{
alert('login not checked');
alert('you can not do what you want');
}
但它不能正常工作。IF ELSE 条件是否错误?
if( $('.log input').is(':checked') ) { // true/false
您可以.is()以 jQuery 方式使用(它是描述性的),并将针对匹配的元素返回一个布尔值。但是你也可以使用 JS.length
属性。
一个更好的解决方案(@macek 建议)
if( $('.log input').prop('checked') ) { // true/false
虽然 using:checked
是测试单选按钮是否被选中的首选方法,但您也可以简单地检查是否$('.log input:checked')
有任何长度。
if($('.log input:checked').length) {
alert('login checked');
} else {
alert('login not checked');
}
这与您的 if 条件完全不同,因为length
将返回检查元素的数量(表示 TRUE)或 0(零)表示 FALSE。
在您的示例if($('.log input:checked'))
中,将始终导致非 FALSE 结果,login checked
无论是否选中单选按钮,都应显示消息。
您实际上应该.prop()
为此使用。它将返回一个true|false
值。
if ( $('.log input').prop('checked') ) { ...
试试这个小插件:
插入:
(function($) {
$.fn.eachChequed = function(fnc, fnnc) {
var
ck = $(this).filter('[type="checkbox"], [type="radio"]'),
isFnc = $.isFunction(fnc),
isFnnc = $.isFunction(fnnc);
function callFnc(el) {
if (isFnc) {
return fnc.call(el);
}
return true
}
function callFnnc(el) {
if (isFnnc) {
return fnnc.call(el);
}
return true;
}
ck.each(function(i, el) {
try {
var r = $(el).is(':checked') ? callFnc(el) : callFnnc(el);
return r;
} catch (e) {}
});
};
})(jQuery);
跑:
$('input').eachChequed(function(){
console.log('checked', $(this));
},function(){
console.log('no checked', $(this));
});
测试:链接