Javascript jQuery';可能存在的缺陷:选中';选择器(在没有复选框时查找复选框)

Javascript jQuery';可能存在的缺陷:选中';选择器(在没有复选框时查找复选框),javascript,jquery,Javascript,Jquery,发现一件奇怪的事。下面的代码应该根据是否选中了一组复选框(所有复选框都具有attribute name=“privacy”)中的一个复选框(例如,在表单回发中),为UI元素设置默认值。如果服务器发送的HTML中没有值(表单不是回发),则默认值应为firstMenuItemKey。否则,它应该是在底层HTML中选中的 但是,当第一次调用包含表单的URL时,页面刷新会将defaultPrivacyValue的值设置为“隐私”复选框之一。我已经检查了服务器在脚本运行之前没有检查复选框(它没有)。我还检

发现一件奇怪的事。下面的代码应该根据是否选中了一组复选框(所有复选框都具有attribute name=“privacy”)中的一个复选框(例如,在表单回发中),为UI元素设置默认值。如果服务器发送的HTML中没有值(表单不是回发),则默认值应为firstMenuItemKey。否则,它应该是在底层HTML中选中的

但是,当第一次调用包含表单的URL时,页面刷新会将defaultPrivacyValue的值设置为“隐私”复选框之一。我已经检查了服务器在脚本运行之前没有检查复选框(它没有)。我还检查了脚本中的其他地方是否选中了复选框(不是)

当我将选择器切换到“输入[name=privacy][checked=checked]”时,它按预期工作。这是基于“:checked”选择器的DOM检索的jQuery实现中的一个缺陷吗????我正在使用jquery1.4.2


感谢您提供的帮助。

在刷新页面时,Firefox将保留表单字段的值,包括复选框的选中状态。这可能是您的问题的原因:Firefox正在传递复选框的选中状态,而不是单独的脚本

我认为Webkit没有这种行为,我对IE也不确定。因此,检验这一假设的一种方法是在Safari或Chrome中查看您的页面


但是,我不知道为什么[checked=checked]选择器的工作方式不同。

您是否还有
name=“privacy”
单选按钮,例如,您是否可以在传递给每个
的函数中添加一个警报,并让它显示
$(this).attr(“name”)+this.tagName
?刷新时显示什么?
var defaultPrivacyValue = firstMenuItemKey;
$('input[name=privacy]:checked').each(function() {
     defaultPrivacyValue = $(this).next().find('.name').text();
});
selectMenuItem(defaultPrivacyValue);