2013-10-24 151 views
0

發現控制的jQuery的優化計數我使用發現這樣的:在股利

var controls = divid.find(':input'); 

這讓我所有的輸入控制在div。

我需要的是獲得每種控制類型的計數,如下所示。

有一個更好的方法。

var answeredRb = false, 
    answeredCb = false, 
    answeredTb = false, 
    answeredSel = false, 
    rbCt = divid.find('input[type=radio]').length, 
    rbSelected = divid.find('input[type=radio]:checked'), 
    rbSelectedCt = rbSelected.length, 
    cbCt = divid.find('input[type=checkbox]').length, 
    cbSelected = divid.find('input[type=checkbox]:checked'), 
    cbSelectedCt = divid.find('input[type=checkbox]:checked').length, 
    tbCt = divid.find('input[type=text]').length, 
    tbs = divid.find('input[type=text]'), 
    selCt = divid.find('select').length; 

感謝您的任何幫助。

+0

但我必須承認,我從來沒有使用過它,它似乎適合下劃線GROUPBY HTTP:// underscorejs.org/#groupBy – jbl

+0

... countby似乎也很有希望http://underscorejs.org/#countBy – jbl

+0

謝謝,jbl,爲您的想法和建議。 – Shrink

回答

1

這是不是足夠了:

var results = {}; 
var rules = ['input[type=radio]', 'input[type=radio]:checked', 'input[type=checkbox]', 'input[type=checkbox]:checked', 'input[type=text]', 'select']; 

$(":input").each(function() 
{ 
    for (var i=0; i<rules.length; i++) 
    if ($(this).is(rules[i])) 
     results[rules[i]] = results[rules[i]]+1 || 1; 

}); 

console.log(results); 

的jsfiddle:http://jsfiddle.net/SyJxU/

一種替代方案:http://jsfiddle.net/SyJxU/1/

+0

看起來很有趣,很有趣。我會仔細看看。 – Shrink