jQuery雙向列表選擇器DIV模擬版
前段時(shí)間項(xiàng)目需要用到雙向列表選擇,想直接用select,結(jié)果發(fā)現(xiàn)某些樣式不支持,只好用div模擬了以下,功能基本實(shí)現(xiàn)能用了,需要其他功能自己加上,譬如列表里展示多列數(shù)據(jù)等。
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); //進(jìn)行排序 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)); }); } //在列表中雙擊時(shí) 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); } } //在列表中單擊時(shí) 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(); } //選項(xiàng)單擊時(shí) obj.find(".item").click(function(){ _click($(this)); }); //選項(xiàng)雙擊時(shí) 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); }); } //頁(yè)面加載完畢后 $(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>數(shù)量</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>數(shù)量</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>
以上所述是小編給大家介紹的jQuery雙向列表選擇器DIV模擬版,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
jQuery實(shí)現(xiàn)購(gòu)物車計(jì)算價(jià)格功能的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)購(gòu)物車計(jì)算價(jià)格功能的方法,實(shí)例分析了jQuery針對(duì)html元素的操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03基于Jquery與WebMethod投票功能實(shí)現(xiàn)代碼
基于Jquery與WebMethod投票功能實(shí)現(xiàn)代碼,需要的朋友可以參考下。2011-01-01jquery實(shí)現(xiàn)在網(wǎng)頁(yè)指定區(qū)域顯示自定義右鍵菜單效果
這篇文章主要介紹了jquery實(shí)現(xiàn)在網(wǎng)頁(yè)指定區(qū)域顯示自定義右鍵菜單效果,涉及jquery鼠標(biāo)點(diǎn)擊及事件綁定等相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08JQuery實(shí)現(xiàn)簡(jiǎn)單的復(fù)選框樹形結(jié)構(gòu)圖示例【附源碼下載】
這篇文章主要介紹了JQuery實(shí)現(xiàn)簡(jiǎn)單的復(fù)選框樹形結(jié)構(gòu)圖,涉及jQuery頁(yè)面元素屬性動(dòng)態(tài)操作與事件響應(yīng)相關(guān)操作技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2019-07-07jQuery 獲取/設(shè)置/刪除DOM元素的屬性以a元素為例
這篇文章主要介紹了jQuery如何獲取/設(shè)置/刪除DOM元素的屬性,需要的朋友可以參考下2014-05-05基于jQuery UI CSS Framework開發(fā)Widget的經(jīng)驗(yàn)
jQuery UI CSS Framework是jQuery UI中的一個(gè)樣式框架,可以利用jQuery Theme roller 來(lái)生成自己想要的css樣式效果。我們可以利用jQuery UI的一些框架來(lái)開發(fā)出基于jQuery UI CSS Framework效果的插件來(lái)。2010-08-08用JQuery實(shí)現(xiàn)全選與取消的兩種簡(jiǎn)單方法
本篇文章主要是對(duì)JQuery實(shí)現(xiàn)全選與取消的兩種簡(jiǎn)單方法進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02非常實(shí)用的jQuery代碼段集錦【檢測(cè)瀏覽器、滾動(dòng)、復(fù)制、淡入淡出等】
這篇文章主要介紹了非常實(shí)用的jQuery代碼段集錦,總結(jié)分析了包括jQuery檢測(cè)瀏覽器、滾動(dòng)、復(fù)制、粘貼、淡入淡出等操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-08-08jQuery實(shí)現(xiàn)定位滾動(dòng)條位置
基于jQuery實(shí)現(xiàn)滾動(dòng)條滾動(dòng)到子元素位置以此來(lái)定位滾動(dòng)條位置,下面是小編給大家?guī)?lái)的實(shí)現(xiàn)代碼,代碼比較簡(jiǎn)單,需要的朋友可以參考下2016-08-08