jQuery每个循环只通过组而不是每个单选按钮?

时间:2013-10-28 04:48:49

标签: jquery selector

为什么这个选择器会通过每个单选按钮而只是循环,因为有不同的组? http://jsfiddle.net/nardev/3AsCm/2/

这是我测试它的方式:

<input type="radio" name="group1" />
<input type="radio" name="group1" />
<input type="radio" name="group1" />

<input type="radio" name="group2" />
<input type="radio" name="group2" />
<input type="radio" name="group2" />

JS:

$('input[name^="group"]').each(function(index){
    console.log(index +": "+$(this).attr("name"));
    $(".h").append(index +": "+$(this).attr("name") +"<br />");
});

4 个答案:

答案 0 :(得分:1)

您的选择器选择名称属性以group开头的所有输入元素,它不会过滤掉唯一名称

如果您只想打印不同的组名,那么

var group = {};
$('input[name^="group"]').each(function (index) {
    var name = this.name;
    if (!group[name]) {
        group[name] = true;
        $(".h").append(index + ": " + name + "<br />");
    }
});

演示:Fiddle

答案 1 :(得分:0)

这是因为选择器要求所有名称以group开头的输入标签。 如果您只想要来自每个唯一组的输入标记,则必须更具体并包括数字(1/2)。

例如:

$('input[name="group1"]').each(function(index){
    console.log(index +": "+$(this).attr("name"));
    $(".h").append(index +": "+$(this).attr("name") +"<br />");
});

答案 2 :(得分:0)

$('input[name^="group"]').

这样就选择namegroup开头的所有单选按钮,这样就会占用所有单选按钮

参考 attribute-starts-with-selector

答案 3 :(得分:0)

您也可以通过以下方法检测不同的组,

var xName = '';

$('input[name^="group"]').each(function (index) {
    if (xName != this.name) {
       xName = this.name;
       $(".h").append(index + ": " + xName + "<br />");  
    }
});

DEMO