使用jquery按顺序排序复选框长度列表
大家好我想通过checkbox: checked
对数字进行排序checkbox: checked
按顺序checkbox: checked
。
我已经通过在Jquery中使用’checked’条件计算检查列表来获取值
$('.rule').on('change', function() { if(this.checked) { count ++; $(this).next('.badges').show().text(count); } })
请注意FIDDLE现在问题是,如果我取消选中选中的列表,我想协商该值。 取消选中
if(!this.checked) { count --; $(this).next('.badges').hide().text(count); console.log("count:" +count); var reduce= parseInt($(this).parent().closest('.box').find('[type=checkbox]:checked').next('.badges').text()); reduce = reduce - 1; if(!reduce==0) { $(this).parent().closest('.box').find('[type=checkbox]:checked').next('.badges').show().empty().text(reduce); } }
例如,有四个列表。 我选择了1,3和5以及徽章中添加的值为1st – 1,3rd – 2和5th – 3。
如果我取消选中3意味着其他列表的徽章值进入顺序顺序1为1,第5为2。
我选择了1,3和5以及徽章中的增值作为第1 – 1,第3 – 第2和第5 – 3.如果我选择第2个列表意味着列表的值必须更改为1,第2个为2,顺便说一下其他
我一直坚持在这里,但完全不在意我提出一些想法。
不确定你的意思,但我觉得它有点……
$(function () { $('.badges').hide(); $('.rule').on('click', function() { $('.badges').hide(); var selected = $('.box [type=checkbox]:checked'); selected.each(function(i, cb) { $(cb).next('.badges').text(i+1).show(); }); }) });
这是使用该代码的jsFiddle 。 如果理解正确,请告诉我?
最简单的方法是迭代所有复选框并重新分配批处理值,如果更改了一个。 例如,可以使用$ .each方法完成此操作。 检查下面的代码:
$(function () { $('.badges').hide(); $('.rule').on('change', function() { var count = 0; $.each($('.rule'), function(i, val) { if(this.checked) { count ++; $(this).next('.badges').show().text(count); } else { $(this).next('.badges').hide(); } }); }); });
.box { padding:10px; border:1px solid #ccc; width:250px; } .box .label_select { display:block; height:25px; line-height:25px; cursor:pointer; margin-bottom:2px; font-size:13px; } .box .label_select:after { clear:both; content: " "; display:block; } .badges { float:right; display:inline-block; background-color:#666; border-radius:50%; padding: 0px 5px; min-width:10px; text-align:center; position:relative; top:-2px; }
因此,当您取消选中时,我会保存未检查徽章的当前值并将其隐藏。 然后我得到所有可见的徽章,如果它们> 1并且>未检查的值,我从每个减去1
$(function () { $('.badges').hide(); var count = 0; $('.rule').on('change', function () { var $currentBadge = $(this).next('.badges'); if (this.checked) { count++; $currentBadge.show().text(count); } else if (!this.checked) { count--; var thisVal = parseInt($currentBadge.text(),10); $currentBadge.hide().text(""); $(".badges:visible").each(function () { var val = parseInt($(this).text(),10); if (val != 1 && val > thisVal) $(this).text(val- 1); }); var reduce = parseInt($(this).parent().closest('.box').find('[type=checkbox]:checked').next('.badges').text()); } }) })
.box { padding:10px; border:1px solid #ccc; width:250px; } .box .label_select { display:block; height:25px; line-height:25px; cursor:pointer; margin-bottom:2px; font-size:13px; } .box .label_select:after { clear:both; content:" "; display:block; } .badges { float:right; display:inline-block; background-color:#ccc; border-radius:50%; padding: 0px 5px; min-width:10px; text-align:center; position:relative; top:-2px; }
- 如何使用JQuery和Ajaxvalidation表单字段并将表单数据发布到服务器?
- jquery validate:IF表格有效,然后显示提交按钮
- Jetbrains PHPStorm 5.0.4告诉我,我有一个重复的jQuery选择器
- getElementById和jquery $(’#smth’)之间的差异
- asp.net从Javascript asyncronous调用WebMethod
- Chart.js – 甜甜圈总是显示工具提示?
- 如何在joomla模块中通过javascript发送输入文件类型
- 更新Ember嵌套模型和模板
- 等待Google Geocoder会产生jquery自定义validation方法