2017-05-04 116 views
1

我的網頁上有許多複選框,這樣的:將檢查項目的類名稱查詢爲數組?

<input type="checkbox" id="cb_31" class="observedType1"> 
<input type="checkbox" id="cb_32" class="observedType1" checked="checked"> 
<input type="checkbox" id="cb_33" class="observedType1"> 
<input type="checkbox" id="cb_40" class="observedType2" checked="checked"> 

我當時就想檢索所有的類在數組(理想狀態爲獨特的項目清單)檢查框,所以我期待對於['observedType1'l'observedType2'].
我最好的主意是: var clss=$("[class*='observedType']:checked").attr("class"); 但只給了我一個字符串「observedType1」。

我怎樣才能得到我想要的數組? (或「名單」穿行在一個循環中)...

還有一個fiddle

+0

你幾乎得到它,你只需要重複上所有選中的複選框 – guradio

回答

3

您需要遍歷所有:checked複選框,在這裏你可以使用.map()

var clss=$("[class*='observedType']:checked").map(function(){ 
    return $(this).attr('class') 
}).get(); 

Updated Fiddle


我建議您使用自定義data-*前綴自定義屬性來存儲仲裁者ary數據。

<input type="checkbox" id="cb_31" class="observedType" data-type="observedType1"> 

可使用.data()方法檢索

var clss = $(".observedType:checked").map(function() { 
    return $(this).data('type') 
}).get(); 

With Custom attribute Fiddle

+0

很酷的東西 - 謝謝!特別是對於'data- *'! – MBaas

+0

更新你的小提琴,以便實際使用自定義屬性並添加唯一... – MBaas

1

你能在JavaScript中的以下內容:

var myInputs = document.getElementsByTagName('input'); 
var myCheckedInputs = Array.from(myInputs).filter(function(input) { 
    return input.checked; 
});