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

2020-05-23 06:17:01易采站长站整理


<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>。