计数+ / – 用于复选框单击并取消选中
当用户点击计数器#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; ">
$('.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