jQuery实现下拉框左右选择的简单实例


Posted in Javascript onFebruary 22, 2014

jQuery实现下拉框左右选择的简单实例

就是实现这个效果的,选中添加到右边,全部添加到右边,选中删除到左边,全部删除到左边。

html部分:

<body>
    <div class="centent">
        <select multiple="multiple" id="select1" style="width:100px;height:160px;">
            <option value="1">选项1</option>
            <option value="2">选项2</option>
            <option value="3">选项3</option>
            <option value="4">选项4</option>
            <option value="5">选项5</option>
            <option value="6">选项6</option>
            <option value="7">选项7</option>
        </select>
        <div>
            <span id="add" >选中添加到右边>></span>
            <span id="add_all" >全部添加到右边>></span>
        </div>
    </div>
    <div class="centent">
        <select multiple="multiple" id="select2" style="width: 100px;height:160px;">
            <option value="8">选项8</option>
        </select>
        <div>
            <span id="remove"><<选中删除到左边</span>
            <span id="remove_all"><<全部删除到左边</span>
        </div>
    </div>
</body>

这里要注意的是select的multiple属性,只有添加了之后,才会在select框中出现多个select选项。
否则只会显示出一条。

jQuery代码解析:

<script type="text/javascript">
$(function(){
    //移到右边
    $('#add').click(function() {
    //获取选中的选项,删除并追加给对方
        $('#select1 option:selected').appendTo('#select2');
    });
    //移到左边
    $('#remove').click(function() {
        $('#select2 option:selected').appendTo('#select1');
    });
    //全部移到右边
    $('#add_all').click(function() {
        //获取全部的选项,删除并追加给对方
        $('#select1 option').appendTo('#select2');
    });
    //全部移到左边
    $('#remove_all').click(function() {
        $('#select2 option').appendTo('#select1');
    });
    //双击选项
    $('#select1').dblclick(function(){ //绑定双击事件
        //获取全部的选项,删除并追加给对方
        $("option:selected",this).appendTo('#select2'); //追加给对方
    });
    //双击选项
    $('#select2').dblclick(function(){
       $("option:selected",this).appendTo('#select1');
    });
});
</script>

这里要注意的是$("option:selected",this)。这个看起来有点奇怪。其实$()有2个参数,一个是选择器,一个是作用域。 要和$("xxxx,xxx")区分。通常意义下的$('xxxx')其实是默认了第二个作用域。完整说应该是$('xxxx',document)。这里加上this之后,作用域就限制在#select1中或#select2中了。也就是select1中的选中项被添加到#select2的后面。

效果类似于$("#select1 option:selected")。

如果不加上,this这个参数的话,就会牵扯到全局中的选中项。就会出错。

注意点2:

append()与appendTo()方法的区别。

append(content|fn)向每个匹配的元素内部追加内容。

appendTo(content)把所有匹配的元素追加到另一个指定的元素元素集合中。

前者是向匹配的元素中添加内容的,后者是把匹配的素有元素追加到另一个指定的元素集合中的。

比如$("p").append("<b>Hello</b>");是向p元素中追加内容<b>Hello</b>。

原来的p元素内容:<p>I would like to say: </p>现在的p元素内容:[ <p>I would like to say: <b>Hello</b></p> ]$("p").appendTo("div");将p元素追加到div元素中。原来的内容:<p>I would like to say: </p>
<div></div><div></div>结果:<div><p>I would like to say: </p></div> <div><p>I would like to say: </p></div>

Javascript 相关文章推荐
XP折叠菜单&amp;仿QQ2006菜单
Dec 16 Javascript
Javascript延迟执行实现方法(setTimeout)
Dec 30 Javascript
使用js 设置url参数
Jul 08 Javascript
javascript实现动态模态绑定grid过程代码
Sep 22 Javascript
jquery得到iframe src属性值的方法
Sep 25 Javascript
javascript面向对象程序设计(一)
Jan 29 Javascript
利用jquery禁止外层滚动条的滚动
Jan 05 Javascript
jQuery zTree 异步加载添加子节点重复问题
Nov 29 jQuery
JS同步、异步、延迟加载的方法
May 05 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
Sep 20 Javascript
OpenLayers3加载常用控件使用方法详解
Sep 25 Javascript
如何在Vue项目中添加接口监听遮罩
Jan 25 Vue.js
jquery取消选择select下拉框示例代码
Feb 22 #Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
Feb 21 #Javascript
jquery组件使用中遇到的问题整理及解决
Feb 21 #Javascript
js document.write()使用介绍
Feb 21 #Javascript
jQuery写fadeTo示例代码
Feb 21 #Javascript
iframe父页面获取子页面参数的方法
Feb 21 #Javascript
表单序列化与jq中的serialize使用示例
Feb 21 #Javascript
You might like
PHP新手上路(七)
2006/10/09 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
joomla组件开发入门教程
2016/05/04 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
JS常用跨域方法实现原理解析
2020/12/09 Javascript
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
五一手机促销方案
2014/03/08 职场文书
预备党员的自我评价
2014/03/12 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书