我有多組複選框和無線電。
每個組都有一個唯一的名稱屬性,但我不知道這些名稱。jQuery獨特名稱選擇器
我正在尋找一個選擇器來獲取每個組,然後通過它們循環以確保至少有一個項目被選中。
很明顯,我可以做一個每個比較名稱,創建一個唯一的數組,然後循環遍歷數組,但我寧願一個一個地做這些,以便更精通。建議?
我有多組複選框和無線電。
每個組都有一個唯一的名稱屬性,但我不知道這些名稱。jQuery獨特名稱選擇器
我正在尋找一個選擇器來獲取每個組,然後通過它們循環以確保至少有一個項目被選中。
很明顯,我可以做一個每個比較名稱,創建一個唯一的數組,然後循環遍歷數組,但我寧願一個一個地做這些,以便更精通。建議?
您可以遍歷元素並將每個組的計數存儲爲對象中的屬性。例如:
var names = {};
$(':checkbox').each(function(){
var name = $(this).attr('name');
names[name] = (names[name] || 0) + ($(this).is(':checked') ? 1 : 0);
});
$.each(names, function(i, e){
if (e == 0) {
alert('No checkbox in group ' + i + ' is checked.');
}
});
你正在做兩個我試圖避免的陳述。但是不管代碼如何。 –
@ResidualEnvy:第二個是循環遍歷結果中的組。你不能在一個循環中完成所有工作,因爲除非你已經擁有了所有的組以及每個組中有多少個複選框,否則你不知道組中是否有複選框沒有勾選。組。 – Guffa
類似的解決方案(從Guffa分叉),使用jQuery的:檢查選擇器。
var names = {};
$(':checkbox').each(function(){
var name = $(this).attr('name');
if (names[name] == null)
{
var c = $("input[name='" + name + "']:checked").length;
names[name] = c;
if (c == 0)
alert('Not checked: ' + name);
}
});
你能告訴我們一些標記,這樣我們就可以幫助嗎?你有什麼嘗試? –
我不認爲這會比你描述的要容易得多。 –
我不認爲css 3對於你所描述的邏輯有選擇器,最後你將需要你提出的建議。 – slash28cu