jQuery选择器错误

时间:2011-11-11 13:09:37

标签: jquery

我使用jQuery UI Dialog和jQuery来选择“收音机”按钮。

我有2个对话框,一个用于“计算器”,另一个用于“expert_mode”。

但是,当我在计算器下选择'input[value="simple"]'时,它也会影响具有相同名称的expert_mode下的input,如何修复?

以下是我的代码:

这是我的HTML(简化):

<div name="widget">
    <div name="calculator">
        <input name="mode" value="a" type="radio" **checked="checked"**/>
        <input name="mode" value="b" type="radio"/>
        <input name="mode" value="c" type="radio"/>
    </div>
    <div name="expert">
        <input name="mode" value="simple" type="radio"/>
        <input name="mode" value="advanced" type="radio"/>
        <input name="mode" value="custom" type="radio"/>
    </div>
</div>

JavaScript:

var widget=$('div[name="widget"]');
var calculator=widget.find('div[name="calculator"]');
var expert=widget.find('div[name="expert"]');

calculator.dialog();
expert.dialog();

然后,当我这样做时:

expert.find('input[value="simple"]').attr('checked',true);

变成:

<div name="widget">
    <div name="calculator">
        <input name="mode" value="a" type="radio"/> ***Here, "checked" disappear!!***
        <input name="mode" value="b" type="radio"/>
        <input name="mode" value="c" type="radio"/>
    </div>
    <div name="expert">
        <input name="mode" value="simple" type="radio" checked="checked"/>
        <input name="mode" value="advanced" type="radio"/>
        <input name="mode" value="custom" type="radio"/>
    </div>
</div>

1 个答案:

答案 0 :(得分:4)

问题是name元素的input,而不是你的jQuery。由于所有单选按钮具有相同的名称,因此它们被视为一个组,每组只能检查一个单选按钮。您必须更改一组单选按钮的name,例如(简化):

<div name="calculator">
    <input name="mode" value="a" type="radio"/>
</div>
<div name="expert">
    <input name="expertMode" value="simple" type="radio" checked="checked"/>
</div>