【发布时间】:2013-07-14 21:36:44
【问题描述】:
所以从昨天下午开始,这个问题一直让我发疯。我一直在为我们的网站开发一个报价计算器,我正在尝试为我的表单上的单选按钮设置样式。报价计算器可以在这里看到:
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");
}
);
如您所见,当单击单选按钮的标签时,会向该标签添加“选中”类。此类具有在我的样式表中指定的样式(即背景颜色)。然后,所有同名但不是被点击的单选按钮都应该删除“checked”类。
这在 FireFox 和 Chrome 中运行良好,但当我在 IE8(或 IE7)中尝试时,一切正常,但似乎 $(":radio[name='"+radioGroup+"']") 选择器不起作用,因为该类没有被删除。本质上,在 IE 中,我的标签不会“取消突出显示”。我尝试了许多选择器的变体,使用伪选择器、过滤器,但仍然没有运气。有人对此有所了解吗?
【问题讨论】:
-
.live已弃用,请改用.on。 -
这个在IE9+中能用吗
-
用 .on 试过了,还是没有骰子。我用的是mac,实际上无法访问ie9,所以我不确定。
标签: javascript jquery jquery-selectors