DOM操作和jQuery实现选项移动操作的简单实例

 更新时间:2016年06月07日 14:55:10   投稿:jingxian  
下面小编就为大家带来一篇DOM操作和jQuery实现选项移动操作的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

DOM:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>DOM选项移动操作</title>
  <style>
    select {
      width: 100px;
      height: 85px;
    }

    div {
      display: inline-block;
      width: 50px
    }
  </style>
</head>
<body>
     <select id="unsel" size="5" multiple><option>Argentina</option><option>Brazil</option><option>Canada</option><option>Chile</option><option>China</option><option>Cuba</option><option>Denmark</option><option>Egypt</option><option>France</option><option>Greece</option><option>Spain</option></select>
    <div>
      <button onclick="move(this.innerHTML)">&gt;&gt;</button>
      <button onclick="move(this.innerHTML)">&gt;</button>
      <button onclick="move(this.innerHTML)">&lt;</button>
      <button onclick="move(this.innerHTML)">&lt;&lt;</button>
    </div>
    <select id="sel" size="5" multiple>
    </select>
  <script>
    function $(id){
      return document.getElementById(id);
    }
    var unsel=null;//保存所有备选国家列表
    var sel=[];//保存已选中的国家列表
    window.onload=function(){
      unsel=$("unsel").innerHTML
              .replace(/<\/?option>/g," ")
              .match(/\b[a-zA-Z]+\b/g);
    }
    function move(inner){
      switch (inner){
        case "&gt;&gt;"://全部右移
          sel=sel.concat(unsel);
          unsel.length=0;
          sel.sort();
          break;
        case "&lt;&lt;"://全部左移
          unsel=unsel.concat(sel);
          sel.length=0;
          unsel.sort();
          break;
        case "&gt;"://选中项右移
          var opts=document.querySelectorAll("#unsel option");
          //从后向前遍历每个option
          for(var i=opts.length-1;i>=0;i--){
            if(opts[i].selected){
            //删除unsel中i位置的1个元素,直接压入sel
              sel.push(unsel.splice(i,1)[0]);
            }
          }
          sel.sort();
          break;
        case "&lt;"://选中项左移
          var opts=document.querySelectorAll("#sel option");
          for(var i=opts.length-1;i>=0;i--){
            if(opts[i].selected){
              unsel.push(sel.splice(i,1)[0]);
            }
          }
          unsel.sort();
          break;
      }
      show();
    }
    function show(){//将两个数组,更新到select元素中
      $("unsel").innerHTML="<option>"
                +unsel.join("</option><option>")
                +"</option>";
      $("sel").innerHTML="<option>"
                +sel.join("</option><option>")
                +"</option>";
    }
  </script>
</body>
</html>

jquery:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>选项移动操作</title>
  <script src="jquery.min.js"></script>
  <style>
    select {
      width: 100px;
      height: 85px;
    }

    div {
      display: inline-block;
      width: 50px
    }
  </style>
</head>
<body>
  <select id="first" size="5" multiple>
    <option>Argentina</option>
    <option>Brazil</option>
    <option>Canada</option>
    <option>Chile</option>
    <option>China</option>
    <option>Cuba</option>
    <option>Denmark</option>
    <option>Egypt</option>
    <option>France</option>
    <option>Greece</option>
    <option>Spain</option>
  </select>
  <div>
    <button id="add">&gt;</button>
    <button id="add_all">&gt;&gt;</button>
    <button id="remove">&lt;</button>
    <button id="remove_all">&lt;&lt;</button>
  </div>
  <select id="second" size="5" multiple>
  </select>

  <script>
      $("#add").click(function(){
        // 将左边被选中的选项,移到右边去
        $("#first>option:selected").appendTo($("#second"));
      });
      $("#add_all").click(function(){
        $("#first>option").appendTo($("#second"));
      });
      $("#remove").click(function(){
        $("#second>option:selected").appendTo($("#first"));
      });
      $("#remove_all").click(function(){
        $("#second>option").appendTo($("#first"));
      });
      // 双击事件
      $("#first").dblclick(function(){
        $("#first>option:selected").appendTo($("#second"));
      });
      $("#second").dblclick(function(){
        $("#second>option:selected").appendTo($("#first"));
      });
  </script>
</body>
</html>

以上这篇DOM操作和jQuery实现选项移动操作的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • jquery 获取标签名(tagName)示例代码

    jquery 获取标签名(tagName)示例代码

    如果是需要取到tagName后再进行判断,那么下面的代码或许对大家有所帮助,感兴趣的朋友不妨尝试一下哈
    2013-07-07
  • jQuery Mobile和HTML5开发App推广注册页

    jQuery Mobile和HTML5开发App推广注册页

    jQuery Mobile和HTML5的组合可以直接开发web版的app,下面通过本教程给大家分享jQuery Mobile和HTML5开发App推广注册页的实例代码,感兴趣的朋友参考下吧
    2016-11-11
  • jQuery实现的简单动态添加、删除表格功能示例

    jQuery实现的简单动态添加、删除表格功能示例

    这篇文章主要介绍了jQuery实现的简单动态添加、删除表格功能,涉及jQuery事件响应及表格元素动态操作相关实现技巧,需要的朋友可以参考下
    2017-09-09
  • 基于jquery实现轮播图效果

    基于jquery实现轮播图效果

    这篇文章主要为大家详细介绍了基于jquery实现轮播图效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • jQuery使用deferreds串行多个ajax请求

    jQuery使用deferreds串行多个ajax请求

    这篇文章主要介绍了jQuery使用deferreds串行多个ajax请求的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】

    jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】

    这篇文章主要介绍了jQuery插件HighCharts绘制简单2D折线图效果,结合完整实例形式分析了jQuery使用HighCharts插件绘制折线图的实现步骤与相关操作技巧,并附带demo源码供读者下载参考,需要的朋友可以参考下
    2017-03-03
  • 实例讲解jquery中mouseleave和mouseout的区别

    实例讲解jquery中mouseleave和mouseout的区别

    这篇文章主要以实例详细讲解了jquery中mouseleave和mouseout的区别,模仿下拉框效果,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Jquery知识点二 jquery下对数组的操作

    Jquery知识点二 jquery下对数组的操作

    众所周知,Jquery是对JavaScript的一种高效的封装,所以Jquery要操作的数组即是JavaScript中的数组,在JavaScript中我们使用for以及for-in进行数组的操作,而在Jquery中则使用$.map()、$.each()来操作数组
    2011-01-01
  • jQuery定义背景动态切换效果的方法

    jQuery定义背景动态切换效果的方法

    这篇文章主要介绍了jQuery定义背景动态切换效果的方法,实例分析了jQuery操作图片的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • JQuery优缺点分析说明

    JQuery优缺点分析说明

    如果你还在犹豫是否要学习一个JavaScript框架,并困惑于选择哪一个框架,那么我推荐你选择jQuery。这并非说其它框架不好,只是jQuery可能是最稳妥和最具回报性的选择。
    2010-06-06

最新评论