jquery点击左边移到右边,上移,下移,置顶,置底排序小插件

Posted xxger前端学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery点击左边移到右边,上移,下移,置顶,置底排序小插件相关的知识,希望对你有一定的参考价值。

        工作中,我们有时候会遇到有点击将左边内容移动到右边,进行排序的小插件,今天就来模仿写一下。效果图如下:

按照惯例,依然直接上结构,样式代码就不展示啦~~

<div class="move-wrap">

<div class="move-box" id="moveBox1">

<div class="icon-box">

<input type="button" value="置顶" class="top">

<input type="button" value="上移" class="up">

<input type="button" value="下移" class="down">

<input type="button" value="置底" class="bottom">

</div>

<div class="select-box">

<ul class="sel"><li><input type="checkbox" class="select-all">全选</li><li><input type="checkbox" class="select-no">反选</li></ul>

<ul class="option-box" id="optionBox1">

<li><input type="checkbox">选项1</li>

<li><input type="checkbox">选项2</li>

<li><input type="checkbox">选项3</li>

<li><input type="checkbox">选项4</li>

<li><input type="checkbox">选项5</li>

<li><input type="checkbox">选项6</li>

<li><input type="checkbox">选项7</li>

<li><input type="checkbox">选项8</li>

</ul>

</div>

</div>

<div class="move-center">

<input type="button" class="right" value=">>">

<input type="button" class="left" value="<<">

</div>

<div class="move-box" id="moveBox2">

<div class="select-box">

<ul class="sel"><li><input type="checkbox" class="select-all">全选</li><li><input type="checkbox" class="select-no">反选</li></ul>

<div class="option-box" id="optionBox2">

<li><input type="checkbox">选项9</li>

<li><input type="checkbox">选项10</li>

<li><input type="checkbox">选项11</li>

<li><input type="checkbox">选项12</li>

<li><input type="checkbox">选项13</li>

<li><input type="checkbox">选项14</li>

<li><input type="checkbox">选项15</li>

<li><input type="checkbox">选项16</li>

</div>

</div>

<div class="icon-box">

<input type="button" value="置顶" class="top">

<input type="button" value="上移" class="up">

<input type="button" value="下移" class="down">

<input type="button" value="置底" class="bottom">

</div>

</div>

</div>


然后是jquery脚本代码:

<script>

$(function(){

//全选、全不选

//版本较高的jquery可以使用prop()方法,一般html元素本身自带的固有属性用prop()方法,我们自定义的DOM属性用attr()方法

$('.select-all').on('click',function(){

var a = $(this).parents('.sel').next('.option-box').find('input');

if($(this).is(':checked')){

a.prop('checked',true);

}else{

a.prop('checked',false);

}

});

//反选

$('.select-no').on('click',function(){

var b = $(this).parents('.sel').next('.option-box').find('input');

b.each(function(){

$(this).prop('checked',!$(this).prop('checked'));

})

});

//右移

$('.right').on('click',function(){

$('#optionBox1 input:checked').parent().appendTo('#optionBox2');

});

//左移

$('.left').on('click',function(){

$('#optionBox2 input:checked').parent().appendTo('#optionBox1');

});

//上移

$('#moveBox1 .up').on('click',function(){

$.each($('#optionBox1 input:checked'), function(){

var onthis = $(this).parent();

onthis.prev().before(onthis);

});

});

$('#moveBox2 .up').on('click',function(){

$.each($('#optionBox2 input:checked'), function(){

var onthis = $(this).parent();

onthis.prev().before(onthis);

});

});

//下移

// 下移不能像上移一样用以下这个思路,会导致当多选为连续两个选项时,点击下移不起作用.

// var onthis = $(this).parent();

// onthis.next().after(onthis);

$('#moveBox1 .down').on('click',function(){

//jQuery.makeArray()将一个类数组对象转换成真正的数组对象

//reverse()将数组中的元素倒序排列

var reverseChecked = jQuery.makeArray($("#optionBox1 input:checked")).reverse();

$.each(reverseChecked,function(){

var checkedLab = $(this).parent();

var downLab = checkedLab.next();

checkedLab.insertAfter(downLab);

});

});

$('#moveBox2 .down').on('click',function(){

var reverseChecked = jQuery.makeArray($("#optionBox2 input:checked")).reverse();

$.each(reverseChecked,function(){

var checkedLab = $(this).parent();

var downLab = checkedLab.next();

checkedLab.insertAfter(downLab);

});

});

//置顶

$('#moveBox1 .top').on('click',function(){

$.each($('#optionBox1 input:checked'), function(){

var onthis = $(this).parent();

$('#optionBox1').prepend(onthis);

});

});

$('#moveBox2 .top').on('click',function(){

$.each($('#optionBox2 input:checked'), function(){

var onthis = $(this).parent();

$('#optionBox2').prepend(onthis);

});

});

//置底

$('#moveBox1 .bottom').on('click',function(){

$.each($('#optionBox1 input:checked'), function(){

var onthis = $(this).parent();

onthis.appendTo('#optionBox1');

});

});

$('#moveBox2 .bottom').on('click',function(){

$.each($('#optionBox2 input:checked'), function(){

var onthis = $(this).parent();

onthis.appendTo('#optionBox2');

});

});

});

</script>



以上是关于jquery点击左边移到右边,上移,下移,置顶,置底排序小插件的主要内容,如果未能解决你的问题,请参考以下文章

在有序数据表中实现多记录上移下移置顶置底算法思路

PHP中如何实现上移和下移功能,急需,请帮忙解决下!

MySQL 上移/下移/置顶

元素的上移下移等排序操作

请教jquery 对表格的行操作的。对页面表格进行上下移动位置,删除记录的操作。 谢谢。如下补充

使用jQuery实现option的上移和下移