所以这个问题从昨天下午开始就让我发疯了。我一直在为我们的网站开发一个报价计算器,我正在尝试为我的表单上的单选按钮设置样式。报价计算器可以在这里看到:
http://www.thoughtspacedesigns.com/services/web-services/web-design/web-design-quote-calculator
如您所见,当您在问题上单击“是”或“否”时,背景会变为嵌入的橙色。这些只是带有标签的单选按钮。这是一些示例 HTML:
<input type="radio" name="cms" value="yes" id="cms1" /><label for="cms1">Yes</label>
<input type="radio" name="cms" value="no" id="cms2" /><label for="cms2">No</label>
在同一个表单中有多个“是/否”广播组。然后我把 display:none; 在单选按钮上并相应地设置标签样式。然后,当单击一个标签时,我使用 jQuery 向它添加一个类,如下所示:
$("label").live('click', function() {
var thisInput = $(this).prev("input");
var radioGroup = thisInput.attr("name");
$(this).addClass("checked");
$(":radio[name='"+radioGroup+"']").not(thisInput).next("label").removeClass("checked");
}
);
如您所见,当单击单选按钮的标签时,会在该标签上添加“选中”类。此类具有在我的样式表中指定的样式(即背景颜色)。然后,所有具有相同名称但不是被单击的单选按钮都应该删除“已检查”类。
这在 FireFox 和 Chrome 中运行良好,但当我在 IE8(或 IE7)中尝试时,一切正常,但似乎$(":radio[name='"+radioGroup+"']")
选择器不起作用,因为类没有被删除。本质上,在 IE 中,我的标签不会“取消突出显示”。我尝试了许多选择器的变体,使用伪选择器、过滤器,但仍然没有运气。有人对此有所了解吗?