发现了一件奇怪的事情。下面的代码应该根据是否有一组复选框(全部具有属性名=“隐私”)被选中(例如,表单回发)为UI元素设置默认值。如果服务器发送的HTML中没有值(表单不是回发),则默认值应为firstMenuItemKey。否则,它应该是在底层HTML中检查的那个。jQuery'可能出现的缺陷':checked'selector(找不到复选框)
但是,虽然这适用于首次调用包含表单的URL,但刷新页面会将defaultPrivacyValue的值设置为其中一个隐私复选框。我已经检查过,脚本运行之前服务器没有检查复选框(不是)。我还检查脚本中的其他地方是否正在检查复选框(不是)。
var defaultPrivacyValue = firstMenuItemKey;
$('input[name=privacy]:checked').each(function() {
defaultPrivacyValue = $(this).next().find('.name').text();
});
selectMenuItem(defaultPrivacyValue);
当我chaged选择器 '输入[名称=隐私] [检查检查=]',它的工作正常。这是在基于':checked'选择器的DOM检索的jQuery实现中的缺陷吗?我正在使用jQuery 1.4.2。
感谢您提供任何帮助。
您是否还有其他名称为'name ='privacy'',例如单选按钮? – 2010-05-09 14:22:15
你可以在函数内部传递给'each'并让它显示$(this).attr(“name”)+ this.tagName'吗?它在刷新时显示什么? – 2010-05-09 14:32:13