2013-07-16 122 views
0

所以这个问题一直让我疯狂自从昨天下午。我一直在为我们的网站开发一个报价计算器,并试图在我的表单上设置单选按钮的样式。该帖计算器可以在这里看到:jQuery输入[名称=“”]选择器不工作

http://www.thoughtspacedesigns.com/services/web-services/web-design/web-design-quote-calculator

正如你所看到的,当你点击yes或no的问题,背景变为插图橙色。这些只是带有标签的单选按钮。下面是一些示例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> 

在同一表单中有多个“是/否”无线电组。然后我把显示:无;在单选按钮上并相应地设置标签的样式。然后,点击一个标签时,我使用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中,我的标签不会“不亮”。我尝试过很多选择器的变体,使用了伪选择器,过滤器,但仍然没有运气。有人对此有所了解吗?

+2

'.live'已弃用,请使用'.on'。 –

+0

这是在IE9 + –

+0

的工作尝试与.on和仍然没有骰子。我使用mac,实际上不能访问ie9,所以我不确定。 –

回答

2

您在IE的链接脚本的一个增加了<label /><input />之间以下(开发人员工具查看刷新HTML之后)

<css3-container style="Z-INDEX: -1; POSITION: absolute; DIRECTION: ltr; TOP: 780px; LEFT: 0px"> 
    <background style="POSITION: absolute; TOP: 0px; LEFT: 0px"> 
     <group1> 
      <?xml:namespace prefix = css3vml ns = "urn:schemas-microsoft-com:vml" /> 
      <css3vml:shape style="POSITION: absolute; WIDTH: 86px; HEIGHT: 42px; TOP: 0px; BEHAVIOR: url(#default#VML); LEFT: 0px" coordsize = "172,84" coordorigin = "1,1" fillcolor = "#ff7955" stroked = "f" path = " m0,16 qy16,0 l156,0 qx172,16 l172,68 qy156,84 l16,84 qx0,68 x e"> 
       <css3vml:fill></css3vml:fill> 
      </css3vml:shape> 
     </group1> 
    </background> 
</css3-container> 

这打破了你的选择,因为.prev("input")找不到输入了

+0

宾果! css3PIE添加了标签:http://css3pie.com/ PIE是一个扩展,可以在ie7和ie8中启用css3属性,如box阴影。显然它是通过在元素被调用之前添加一个元素来实现的。为了解决我的问题,我只是从标签元素中删除了PIE。但我仍然想使用PIE。有没有办法仍然选择“prev”以外的这个元素?就像也许“最接近”?我不确定。意见? –

+1

@ThoughtSpaceDesigns不能通过ID选择吗? ''('#'+ $(this).attr(“for”))' –

+0

我也会使用标签中的“for”属性 – Andreas