2013-10-28 79 views
3

爲什麼這個選擇器會遍歷每個單選按鈕,而不是像有不同的組一樣循環呢? http://jsfiddle.net/nardev/3AsCm/2/jQuery每個循環只通過組而不是每個單選按鈕?

這是我的測試:

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

回答

1

你的選擇選擇以開頭的名稱屬性的所有輸入元素,如果你只想打印不同的組名就不會過濾掉唯一的名稱

然後

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

這是因爲選擇請求具有與組開頭的名稱的所有輸入標籤。 如果您只需要來自每個唯一組的輸入標籤,則必須更具體,幷包含數字(1/2)。

例如:

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

通過這一點,SELCT所有單選按鈕,其name是先從group因此將採取一切單選按鈕

參考attribute-starts-with-selector

1

您還可以通過以下方法檢測不同的羣體太,

var xName = ''; 

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

DEMO