2011-08-04 36 views
1

我正在計數checkhed複選框。看她:http://jsfiddle.net/2bCdR/2/ Jquery計數器不起作用,並且也禁用其他Jquery。Jquery幫助計算選中的複選框

我的Jquery {

$.each($('div.category'), function() { 
var categoryDiv = $(this); 
function countChecked() { 
    var n = $("categoryDiv input:checked").length; 
    $("categoryDiv #counter").text(n); 
} 
} 
countChecked(); 

$(":checkbox").click(countChecked); 

我的HTML

<form accept-charset="UTF-8" action="/" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div> 

     <div class="menuitem category"> 
      <label for="search_company1">company1</label> 
      <input name="search[company1_is_true]" type="hidden" value="0" /> 
      <input id="search_company1_is_true" name="search[company1_is_true]" type="checkbox" value="1" /> 
      <div id="counter"></div> 
     </div> 
     <div class="menuitem category"> 
      <label for="search_company3">company3</label> 
      <input name="search[company3_is_true]" type="hidden" value="0" /> 
      <input id="search_company3_is_true" name="search[company3_is_true]" type="checkbox" value="1" /> 
      <div id="counter"></div> 
     </div> 
     <div class="hidediv"> 
      <div class="menuitem"> 
       <label for="search_company2">company2</label> 
       <input name="search[company2_is_true]" type="hidden" value="0" /> 
       <input id="search_company2_is_true" name="search[company2_is_true]" type="checkbox" value="1" /> 

      </div> 
     </div> 
     <input id="search_submit" name="commit" style="display:none;" type="submit" value="Submit" /> 
</form> 

回答

1

1 - 你有重複的 '櫃檯' Div編號。您應該將它們更改爲類(不應該重複ID)。

2 - 您不需要循環。一個適當的遍歷單擊處理程序將做到這一點。

$(":checkbox").click(function() { 

    // find closest category parent div 
    var $cat = $(this).closest(".category"); 

    // get checkbox within category, check length 
    var len = $cat.find(":checkbox:checked").length; 

    // update the div's counter 
    $cat.find(".counter").text(len); 
}); 

演示:http://jsfiddle.net/mvdnj/1/

+0

因爲如果單擊DIV的複選框被選中,但櫃檯DOS不更新有與jQuery的一個問題。當點擊div和複選框時,計數器應該更新 –

+0

minimenu中的複選框不會添加到計數器 –

+0

更改複選框的標籤以匹配複選框的IDS,並且不需要div可點擊。 – karim79

3
var checked = $(':checkbox:checked', '.menuitem, .hidediv').length; 

檢查工作的例子出來here

+0

你的意思是'.filter'。 – SLaks

+0

IT不應該統計所有的複選框,每個菜單項有一個計數器,它應該統計隱藏區域中的所有選中的複選框以及菜單項複選框 –