只计数一次复选框类
count checkbox class only once
我已经写了这个脚本来检查当复选框与类"A", "B"answers"C"被选中,然后将它们加在一起(这些类被分配给多个复选框)。但是,我只想计数选中它们的一个实例,而此脚本每次选中具有这些值的复选框时都会计数。我怎样才能把它改成只计算一次呢?
jquery: $(function() {
$('#product-counter .counter').text('0');
var total = $("#search-id-checkboxes .A:checked").length + $("#search-id-checkboxes .B:checked").length + $("#search-id-checkboxes .C:checked").length;
if(total>0){$("#product-counter .counter").text(total);}
else{$("#product-counter .counter").text('0');}
})
function updateCounter() {
var len = $("#search-id-checkboxes .A:checked").length + $("#search-id-checkboxes .B:checked").length + $("#search-id-checkboxes .C:checked").length;
if(len>0){$("#product-counter .counter").text(len);}
else{$("#product-counter .counter").text('0');}
}
$("#search-id-checkboxes input:checkbox").on("change", function() {
updateCounter();
});
html:
<div id="search-id-checkboxes">
<input type="checkbox" class="A"/> A<br />
<input type="checkbox" class="A" /> A<br />
<input type="checkbox" class="B" /> B<br />
<input type="checkbox" class="B" /> B<br />
<input type="checkbox" class="C" /> C<br />
<input type="checkbox" class="C" /> C<br />
</div>
您已经尝试过jquery的独特方法了吗?见http://api.jquery.com/jQuery.unique/
不需要迭代的临时逻辑,并在内部计算的总数上工作,
演示:http://jsfiddle.net/MQhyt/
全功能:
$(function () {
$('#product-counter .counter').text('0');
var inArray = [];
$("#search-id-checkboxes :checkbox").each(function () {
if (this.checked && $.inArray(this.className, inArray) == -1) {
inArray.push(this.className);
}
});
var total = inArray.length;
if (total > 0) {
$("#product-counter .counter").text(total);
} else {
$("#product-counter .counter").text('0');
}
$("#search-id-checkboxes input:checkbox").on("change", function () {
updateCounter.call(this);
});
function updateCounter() {
var elClass = this.className;
var $el = $('#search-id-checkboxes .' + elClass + ':checked');
if ($el.length == 1 && this.checked) {
total += 1;
} else if ($el.length == 0) {
total -= 1;
}
$("#product-counter .counter").text(total);
}
});
如果您对上述逻辑有任何问题,请使用.each
查看此版本http://jsfiddle.net/WLmtq/。
也许你想检查如下,
var len = ($("#search-id-checkboxes .A").is(":checked") ? 1 : 0) +
($("#search-id-checkboxes .B").is(":checked") ? 1 : 0) +
($("#search-id-checkboxes .C").is(":checked") ? 1 : 0);
演示:http://jsfiddle.net/MCKtA/
用这个…
var total = 0;
$(':checkbox').on('change', function (e) {
var a = $(this).prop('class');
if($("." + a + ':checked').length == 1 && $(this).is(':checked')){
total +=1;
}
if($("." + a + ':checked').length == 0){
total-=1;
}
$('#product-counter .counter').text(total);
});
查看DEMO
相关文章:
- 如何在javascript中获取一组复选框值
- 在一组复选框中,一次只允许选择一个
- 使用javascript选中“计算总数一次”复选框
- 如何引用表单元格中任意给定行的一组复选框
- 在具有单击事件的 li 内时停止选中两次复选框
- 将两个数组绑定到一组复选框中 - angularjs
- 如何使用jQuery/Javascript检查用户是否从一组复选框中选中了至少一个复选框
- 我如何创建一个函数来选择一组复选框的子集
- 验证至少一个子复选框,对应于复选框数组的选中元素
- Jquery复选框分组 - 单击至少一个子复选框时取消选中父项,选中所有子复选框时选中父项
- Javascript:同时启用 2 个文本框,单击一次复选框
- 在提交之前将一堆复选框输入附加到表单,然后隐藏它们
- 使用 javascript 检查是否已选中一组复选框
- 在一组复选框中的每个选定复选框上显示警报
- Ember循环遍历一组复选框并获取选中的项目
- 如何在选中另一个复选框时取消选中一组复选框
- 如何使用值设置一组复选框
- 如何将一组复选框名称发布到数组中
- 如何使用YUI3 AlloyUI验证一组复选框?
- 只计数一次复选框类