Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQueryUI对话框、复选框和IE6的神秘案例_Javascript_Jquery_Jquery Ui - Fatal编程技术网

Javascript jQueryUI对话框、复选框和IE6的神秘案例

Javascript jQueryUI对话框、复选框和IE6的神秘案例,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我有一个jQueryUI对话框,其中包含一些复选框。我想有条件地设置这些复选框的状态,然后打开对话框 不幸的是,这会导致IE6出现问题。如果在打开对话框之前设置了该复选框的值,则不会选中该复选框 例如,在下面的代码中,“对话框复选框1”从未在IE6中被选中,而是在其他浏览器中被选中 [更新]问题在于IE6如何重置附加在任何位置的任何复选框的状态。当对话框打开时,jQueryUI会将其附加到主体的顶部。显然,“这是一个已知的事实,当使用IE时 当复选框被添加到[任何地方]时,复选框将失去其状态(请

我有一个jQueryUI对话框,其中包含一些复选框。我想有条件地设置这些复选框的状态,然后打开对话框

不幸的是,这会导致IE6出现问题。如果在打开对话框之前设置了该复选框的值,则不会选中该复选框

例如,在下面的代码中,“对话框复选框1”从未在IE6中被选中,而是在其他浏览器中被选中

[更新]问题在于IE6如何重置附加在任何位置的任何复选框的状态。当对话框打开时,jQueryUI会将其附加到主体的顶部。显然,“这是一个已知的事实,当使用IE时 当复选框被添加到[任何地方]时,复选框将失去其状态(请参见下面的链接)

建议一些解决方案,但与更改jQuery UI代码有关;如果可能的话,我宁愿不做的事情

有什么解决办法吗

谢谢

D

代码:

$(文档).ready(函数(){
$('#dialog')。dialog({
自动打开:错误,
莫代尔:对
});
$(“打开对话框”)。单击(函数(){
$(“#formContainer.check1”).attr(“checked”,true);
$('dialog')。dialog('open');
$(“#formContainer.check2”).attr(“checked”,true);
});
});
jQuery对话框/复选框测试
对话框复选框1:
对话框复选框2:

为复选框指定不同的id,然后尝试使用id调用chek函数

如果复选框1的id为check1

$(“check1”).attr(“checked”,true)


试一试

总是不愿意回答我自己的问题,但我发现了一个变通方法,如果其他人遇到这个问题,他们会觉得很有用

在打开对话框之前进行设置时,请使用“defaultChecked”属性,而不是“checked”。例如:

$("a#openDialog").click(function() {
    $("#formContainer .check1").attr("defaultChecked", true);
    $('#dialog').dialog('open');
    $("#formContainer .check2").attr("checked", true);
});

请注意,打开后的“defaultChecked”不会对其进行检查。如果代码可能会移动,则两者都使用可能更安全。

否。这不起作用。这不是选择器问题。这是IE6中jQueryUI如何将对话框附加到主体的问题。我会更新这个问题来澄清这一点。我不知道你为什么讨厌回答自己的问题,但我很高兴你这么做了。
$("a#openDialog").click(function() {
    $("#formContainer .check1").attr("defaultChecked", true);
    $('#dialog').dialog('open');
    $("#formContainer .check2").attr("checked", true);
});