我想禁用我的班级中未选中复选框的所有元素。 但即使这被检查,我的if也会返回false。
$('.myClass').each(function(i, obj) {
if (!$j('input[name='+obj.id+']').is(':checked')){
$j('#desc_'+obj.id).attr('disabled','disabled');
}
});
但是,如果我在if中发出警报,它的作品!
$('.myClass').each(function(i, obj) {
if (!$j('input[name='+obj.id+']').is(':checked')){
alert($j('input[name='+obj.id+']').is(':checked'));
$j('#desc_'+obj.id).attr('disabled','disabled');
}
});
任何人都知道为什么?
答案 0 :(得分:5)
开发人员倾向于使用console.log,而alert()的行为则不同,因为在警报点击“确定”按钮之后,DOM才会完全加载。
考虑使用:
$('.myClass').each(function(i, obj) {
if (!$j('input[name='+obj.id+']').is(':checked')){
console.log($j('input[name='+obj.id+']').is(':checked'));
$j('#desc_'+obj.id).prop('disabled','disabled');
}
});
有关更多信息和文档,请参阅:
What is console.log and how do I use it?
和
https://developer.mozilla.org/en-US/docs/Web/API/console.log
编辑:
我也会考虑使用.prop而不是.attr,主要的区别和原因在这里突出显示:
我重新发明轮子没有意义!
答案 1 :(得分:0)
看起来你引用了jQuery错误。试试这个:
$('.myClass').each(function(i, obj) {
if (!$('input[name='+obj.id+']').is(':checked')){
$('#desc_'+obj.id).attr('disabled','disabled');
}
});
区别是.. $ j(.. vs .. $(..
答案 2 :(得分:-1)
确保您的代码包含在$(function(){...}
中$(function() {
$('.myClass').each(function(i, obj) {
if (!$j('input[name='+obj.id+']').is(':checked')){
$j('#desc_'+obj.id).attr('disabled','disabled');
}
});
});