3

为什么这个选择器会遍历每个单选按钮,而只是为了循环尽可能多的不同组?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

4 回答 4

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 />");
    }
});

演示:小提琴

于 2013-10-28T04:53:43.640 回答
0

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

前任:

$('input[name="group1"]').each(function(index){
    console.log(index +": "+$(this).attr("name"));
    $(".h").append(index +": "+$(this).attr("name") +"<br />");
});
于 2013-10-28T04:52:34.133 回答
0
$('input[name^="group"]').

通过这个它选择所有以它开头的单选按钮,name因此group 它将采用所有单选按钮

参考 属性以选择器开始

于 2013-10-28T04:52:59.760 回答
0

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

var xName = '';

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

演示

于 2013-10-28T05:03:07.133 回答