首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jquery按顺序排序复选框长度列表

使用jquery按顺序排序复选框长度列表
EN

Stack Overflow用户
提问于 2014-12-04 12:38:12
回答 3查看 1K关注 0票数 0

嗨,大家都在试着按checkbox: checked顺序排序一个数字。

代码语言:javascript
复制
<div class="box sortable">
            <label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
            <label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
            <label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
            <label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
            <label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
            <label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
       </div>

我已经通过在Jquery中使用“checked”条件来计数选中列表来获得一个值。

代码语言:javascript
复制
$('.rule').on('change', function() {
        if(this.checked) {
            count ++;
            $(this).next('.badges').show().text(count);
        }
})

请注意小提琴现在的问题是,我想谈判的价值,如果我取消检查的列表。不检查

代码语言:javascript
复制
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,徽章中的增值作为1- 1,3-2和5-3。

如果我不检查,3意味着其他列表的徽章值按顺序排列1为1,5为2。

我选择了1,3和5,以及徽章中的增值作为1- 1,3-2和5-3。如果我选择了第2列表,意味着列表的值必须改为1,2为2,顺便说一句。

我被困在这里,而不检查是完全疯了,给出一些想法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-04 14:46:57

不知道你是什么意思,但我觉得有点像.

代码语言:javascript
复制
$(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。如果理解正确就让我知道?

票数 2
EN

Stack Overflow用户

发布于 2014-12-04 13:26:25

最简单的方法是迭代所有复选框,并在更改一个复选框时重新分配批处理值。例如,这可以通过$.each方法来完成。检查下面的片段:

代码语言:javascript
复制
$(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();
            }
        });
	});
});
代码语言:javascript
复制
	.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;
		}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="box sortable">
			<label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
			<label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
			<label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
			<label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
			<label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
			<label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
</div>

票数 0
EN

Stack Overflow用户

发布于 2014-12-04 13:46:59

所以当你取消检查时,我保存未检查的徽章的当前值并隐藏它。然后,我得到所有可见的徽章,如果它们>1和>未检查的值,则从每个标记中减去1。

代码语言:javascript
复制
$(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());

        }
    })
})
代码语言:javascript
复制
.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;
	}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div class="box sortable">
			<label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
			<label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
			<label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
			<label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
			<label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
			<label class="label_select"><input type="checkbox" class="rule" />Rule list <span class="badges"></span></label>
	   </div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27294318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档