Jquery 选中的复选框未选中

Jquery 选中的复选框未选中,jquery,checkbox,jquery-ui-dialog,checked,Jquery,Checkbox,Jquery Ui Dialog,Checked,我将数组传递给一个函数,该函数应该在jQuery对话框中选中/取消选中某些复选框 function preCheck(boolArray){ $("#cb0").attr("checked", boolArray[0]); $("#cb1").attr("checked", boolArray[1]); $("#cb2").attr("checked", boolArray[2]); $("#cb3").attr("checked", boolArray[3]); //etc. $(

我将数组传递给一个函数,该函数应该在jQuery对话框中选中/取消选中某些复选框

function preCheck(boolArray){
 $("#cb0").attr("checked", boolArray[0]);
 $("#cb1").attr("checked", boolArray[1]);
 $("#cb2").attr("checked", boolArray[2]);
 $("#cb3").attr("checked", boolArray[3]);
 //etc.
 $("#divform").dialog("open");
}
这些复选框放置在divform中,该divform作为document.ready函数中的对话框显示。boolArray中的值由我单击哪个按钮打开对话框来定义(导致根据单击哪个按钮而选中不同的复选框)

我的问题如下:第一次单击按钮时,复选框会根据boolArray进行相应的选中。如果我选中/取消选中一些手动>关闭对话框>重新单击同一按钮打开对话框,复选框将保持在关闭对话框之前的状态,并且不再根据boolArray的值选中/取消选中。更令人沮丧的是,我未选中的和应该选中的(根据boolArray中的布尔值)在HTML中显示为
checked=“checked”
,即使没有勾号。任何帮助都将不胜感激,我真的迷路了。

你应该使用

从jQuery文档中:

根据W3C forms规范,checked属性是一个布尔属性,这意味着如果该属性存在,则对应的属性为true,即使该属性没有值或设置为空字符串值,甚至为“false”。这适用于所有布尔属性

您可能会看到这种行为:您已经设置了属性并正在更改其值;因为它是布尔型的,所以它的存在意味着您的复选框被选中

试试这个:

function preCheck(boolArray){
 $("#cb0").prop("checked", boolArray[0]);
 $("#cb1").prop("checked", boolArray[1]);
 $("#cb2").prop("checked", boolArray[2]);
 $("#cb3").prop("checked", boolArray[3]);
 //etc.
 $("#divform").dialog("open");
}
请尝试使用.prop()。下面是一个演示: 即使您更新了阵列,这也将继续工作

function preCheck(boolArray){
 $("#cb0").prop("checked", boolArray[0]);
 $("#cb1").prop("checked", boolArray[1]);
 $("#cb2").prop("checked", boolArray[2]);
 $("#cb3").prop("checked", boolArray[3]);
}

var checks = [true, false, true, true, false];
$('button').click(function(){
    preCheck(checks);
});

改用jQuery-prop,请参见:@WizLiz-我在下面添加了一个演示,使用.prop()它当然可以工作。也许你可以在对话框中发布更多的代码,还有什么不可以呢?这是我第一次尝试,但没有成功。然而,我刚刚意识到,我的浏览器缓存了我的旧javascript(使用attr),并没有在客户端刷新它,这让我觉得这个道具也不能正常工作。我刚刚重新启动,道具工作正常,谢谢