jquery双向列表选择器DIV模拟版
现某些样式不支持,只好用div模拟了以下,功能基本实现能用了,需要其他功能自己加上,譬如列表里展示多列数据等。
select版链接:http://www.cnblogs.com/tie123abc/p/6018912.html
<!doctype html> <html> <head> <meta charset="utf-8"> <title>双向列表选择器DIV模拟</title> <script type="text/javascript" src="../public/jquery-1.8.2.js"></script> <script type="text/javascript"> /** * two_way_list_selector.js - v1.0.0 (2016/7/26) * * Allows you to easily page layout! * by tie. qq:2185987263 * * Copyright (C) 2016, tie. * All rights reserved. * **/ var two_way_list_selector=function(o){ var obj=o; var btn_a=o.find(".btn_a"); var btn_b=o.find(".btn_b"); var btn_c=o.find(".btn_remove_all"); var btn_d=o.find(".btn_add_all"); var select_a=o.find(".select_a"); var select_b=o.find(".select_b"); //是否按下了shift var is_shift=false; //是否按下了ctrl var is_ctrl=false; document.addEventListener("keydown",function(e){ is_shift=e.shiftKey; is_ctrl=e.ctrlKey; },false); document.addEventListener("keyup",function(e){ is_shift = is_ctrl = false; },false); //进行排序 var option_sort=function(o){ o.html(o.find("div").toArray().sort(function(a, b){ return parseInt($(a).attr("data-index")) - parseInt($(b).attr("data-index")); })); obj.find(".item").removeClass("is_select"); obj.find(".item").unbind("dblclick").dblclick(function(){ _dblclick($(this)); }); obj.find(".item").unbind("click").click(function(){ _click($(this)); }); } //在列表中双击时 var _dblclick=function(o){ var flag = o.parent().attr("class"); var a ; if(flag == "select_a"){ a = o.clone(true); select_b.append(a); o.remove(); option_sort(select_b); } else { a = o.clone(true); select_a.append(a); o.remove(); option_sort(select_a); } } //在列表中单击时 var temp_index=0; var _click=function(o){ var flag=o.parent().attr("class"); if(is_shift){ var this_index=o.index(); if(temp_index!=this_index){ obj.find("."+flag+" .item").each(function(index, element) { if(this_index>temp_index && index<this_index && index>=temp_index){ $(this).addClass("is_select"); } if(this_index<temp_index && index>this_index && index<=temp_index){ $(this).addClass("is_select"); } }); } } if(!is_ctrl && !is_shift){ obj.find("."+flag+" .item").each(function() { $(this).removeClass("is_select"); }); } if(o.hasClass("is_select")){ o.removeClass("is_select"); }else{ o.addClass("is_select"); } temp_index=o.index(); } //选项单击时 obj.find(".item").click(function(){ _click($(this)); }); //选项双击时 obj.find(".item").dblclick(function(){ _dblclick($(this)); }); //加入选中 btn_a.click(function(){ var a = select_a.find(".is_select").clone(true); if(a.size() == 0){ return false; } select_b.append(a); select_a.find(".is_select").remove(); option_sort(select_b); }); //删除选中 btn_b.click(function(){ var a = select_b.find(".is_select").clone(true); if(a.size() == 0){ return false; } select_a.append(a); select_b.find(".is_select").remove(); option_sort(select_a); }); //删除全部 btn_c.click(function(){ select_a.append(select_b.find("div")); option_sort(select_a); }); //加入全部 btn_d.click(function(){ select_b.append(select_a.find("div")); option_sort(select_b); }); } //页面加载完毕后 $(document).ready(function(e) { two_way_list_selector($("#two_way_list_selector_a")); two_way_list_selector($("#two_way_list_selector_b")); }); </script> <style type="text/css"> @charset "utf-8"; .two_way_list_selector { width: 100%; height: 250px; } .two_way_list_selector .select_l, .two_way_list_selector .select_r { width: 40%; height: 250px; float: left; border: 1px solid #CCC; } .two_way_list_selector .select_l .option { height: 29px; line-height: 29px; border-bottom: 1px solid #ddd; } .two_way_list_selector .select_l .option .l { width: 30%; float: left; text-indent: 10px; } .two_way_list_selector .select_l .option .r { width: 70%; float: right; text-align: center; } .two_way_list_selector .select_l .select_a, .two_way_list_selector .select_r .select_b { width: 100%; height: 220px; overflow: auto; } .two_way_list_selector .select_r .select_b { height: 250px; } .two_way_list_selector .select_l .select_a div, .two_way_list_selector .select_r .select_b div { padding: 10px; height: 25px; line-height: 25px; border-bottom: 1px solid #ddd; background: #FFF; } .two_way_list_selector .select_l .select_a div:last-child, .two_way_list_selector .select_r .select_b div:last-child { border-bottom: none; } .two_way_list_selector .select_btn { width: 10%; height: 250px; float: left; display: table; text-align: center; } .two_way_list_selector .select_btn div { height: 250px; display: table-cell; vertical-align: middle; } .two_way_list_selector .select_btn div input { width: 90%; margin: 1px; text-align: center; font-weight: 100; color: #999; } .two_way_list_selector .select_l .select_a .is_select, .two_way_list_selector .select_r .select_b .is_select { color: #FFF; background: #3399FF; } </style> </head> <body> <div id="two_way_list_selector_a" class="two_way_list_selector margin_top_10"> <div class="select_l"> <div class="option"> <div class="l">名称</div> <div class="r"><a>数量</a></div> </div> <div class="select_a"> <div data-value="1" data-index="0" class="item">1</div> <div data-value="2" data-index="1" class="item">2</div> <div data-value="3" data-index="2" class="item">3</div> <div data-value="4" data-index="3" class="item">4</div> <div data-value="5" data-index="4" class="item">5</div> <div data-value="6" data-index="5" class="item">6</div> <div data-value="7" data-index="6" class="item">7</div> </div> </div> <div class="select_btn"> <div> <input type="button" value=">" class="button btn_a"> <input type="button" value=">>" class="button btn_add_all"> <input type="button" value="<<" class="button btn_remove_all"> <input type="button" value="<" class="button btn_b"> </div> </div> <div class="select_r"> <div class="select_b"></div> </div> </div> <br> <div id="two_way_list_selector_b" class="two_way_list_selector margin_top_10"> <div class="select_l"> <div class="option"> <div class="l">名称</div> <div class="r"><a>数量</a></div> </div> <div class="select_a"> <div data-value="a" data-index="0" class="item">a</div> <div data-value="b" data-index="1" class="item">b</div> <div data-value="c" data-index="2" class="item">c</div> <div data-value="d" data-index="3" class="item">d</div> <div data-value="e" data-index="4" class="item">e</div> <div data-value="f" data-index="5" class="item">f</div> <div data-value="g" data-index="6" class="item">g</div> </div> </div> <div class="select_btn"> <div> <input type="button" value=">" class="button btn_a"> <input type="button" value=">>" class="button btn_add_all"> <input type="button" value="<<" class="button btn_remove_all"> <input type="button" value="<" class="button btn_b"> </div> </div> <div class="select_r"> <div class="select_b"></div> </div> </div> </body> </html>

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

本篇文章整理了20+Vue面试题分享给大家,同时附上答案解析。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver Mac version
Visual web development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Atom editor mac version download
The most popular open source editor

SublimeText3 Linux new version
SublimeText3 Linux latest version
