计数+ / – 用于复选框单击并取消选中

当用户点击计数器#counter +1的复选框时,那很好,但当他取消选中时,对于同一个复选框,它不为-1。 当他们点击特定复选框并取消选中-1时,我想要+1。

–JS–

$('.CheckBox').toggle(function(){ $('#Counter').html('( '+i+' Selected )'); i++; }, function() { $('#Counter').html('( '+i+' Selected )'); i--; }); 

— PHP —

 do { ?> <div style="position:relative; width:100%; height:20px; background-color:#FF5300;" class="CheckBox" id=""> <input type="checkbox" name="" value="" style="cursor:pointer; ">  
(0 Selected)

 $('.CheckBox').change(function() { if (this.checked) { i++; } else { i--; } $('#Counter').html('( '+i+' Selected )'); }); 

确保初始化var i = 0; 页面加载时

尝试不同的方法:

 $('.CheckBox').change(function(){ var n_checkboxes_checked = $('.CheckBox:checked').length; $('#Counter').html(n_checkboxes_checked + ' Selected'); }); 

jsFiddle演示: http : //jsfiddle.net/ENxnK/2

使用change(),而不是切换()

 var i = 0; $('.CheckBox').change(function() { if ( $(this).attr('checked') ) { i++; } else { i--; } $('#Counter').html('( ' + i + ' Selected )'); }); 

您没有任何代码点击此处的复选框。 jquery中的.toggle只处理隐藏/显示元素。

UPD。 我认为你不需要像其他人提出的那样浏览所有.checkbox元素..而且你不需要全局变量i 。 而是像

 $('.CheckBox input').click(function(){ $('#Counter').html('( '+$('.CheckBox input:checked').length()+' Selected )'); } 

在jQuery文档中它说….

  Description: Bind two or more handlers to the matched elements, to be executed on alternate clicks. .toggle( handler(eventObject), handler(eventObject) [, handler(eventObject)] ) handler(eventObject)A function to execute every even time the element is clicked. handler(eventObject)A function to execute every odd time the element is clicked. 

所以它与check / uncheck无关

这样做

 $('.CheckBox').click(function(){ if($(this).attr('checked')){ $('#Counter').html('( '+i+' Selected )'); i++; }else{ $('#Counter').html('( '+i+' Selected )'); i--; } } 

是点击而不是切换…我错过了,你不要使用attr