好的,我现在遇到了$ .prop('已检查')功能的问题。当取消选中我的一些盒子并使用此功能读取复选框时,当其中一些盒子应该显示为未选中时,所有这些盒子仍然显示为true。检查这个功能的部分在下面,但是有些背景:我在每个td元素中使用带有输入值的表,并且由于它的编写方式,我不得不聚集所有info / validate /并使用td.each()函数进行检查。
$("td", ele).each(function(idx){
var before = $('.e_content', this),
b_name = $('input:last[type!="hidden"], textarea:last, checkbox:last, select:last', this).attr('name'),
b_val = $('input[name="'+b_name+'"], select:last, textarea[name="'+b_name+'"]', this).val(),
b_chx = $('input:checkbox[name="'+b_name+'"]', this).prop('checked'),
after = function(){
before.hide();
$(ele).css("background", color);
$('td.edit', ele).show();
$('td.save', ele).hide();
$('span', this)
// WORKING ON TAKING THE VALUE OF THE .e_content FORM AND REPLACING THE SPAN WITH IT
.html(function(){
console.log(b_name+' : '+b_chx);
if(b_val != undefined && b_val != ''){
if(b_name == 'StageType'){
if(b_val == 1){ return 'Voice'; }
if(b_val == 2){ return 'Text'; }
if(b_val == 3){ return 'Email'; }
}
else if(b_name == 'qtrhour') {
return $('select', before).find(':selected').text();
}
else if(b_chx == true) { return '✓'; }
else if(b_chx == false) { return '✗'; }
else {
if(before.find('input:last').prop('type') != 'checkbox')
return b_val.replace(/\n\r?/g, '<br />');
}
}
})
.show();
};
$(this).html(after);
});
问题在于这一行:
b_chx = $('input:checkbox[name="'+b_name+'"]', this).prop('checked'),
即使在按下保存按钮之前取消选中复选框,它也会一直显示为真。此函数将触发.save单击事件。希望这足以确定可能出现的问题。
答案 0 :(得分:0)
您可以尝试以下方法,
$('input:checkbox[name="'+b_name+'"]', this).is(':checked');
答案 1 :(得分:0)
为了避免检查或取消选中复选框的问题,我通常使用jQuery.attr()
$(...).attr('checked')
$(...).attr('checked','checked')
$(...).removeAttr('checked')
有时我会检查或取消选中它们绑定或触发.click()函数。