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


Posted in Javascript onJune 07, 2016

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)">>></button>
      <button onclick="move(this.innerHTML)">></button>
      <button onclick="move(this.innerHTML)"><</button>
      <button onclick="move(this.innerHTML)"><<</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 ">>"://全部右移
          sel=sel.concat(unsel);
          unsel.length=0;
          sel.sort();
          break;
        case "<<"://全部左移
          unsel=unsel.concat(sel);
          sel.length=0;
          unsel.sort();
          break;
        case ">"://选中项右移
          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 "<"://选中项左移
          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">></button>
    <button id="add_all">>></button>
    <button id="remove"><</button>
    <button id="remove_all"><<</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实现选项移动操作的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 学习第六课 实现一个Ajax的TreeView
May 17 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
Nov 19 Javascript
js阻止事件追加的具体实现
Oct 15 Javascript
跟我学习javascript的prototype使用注意事项
Nov 17 Javascript
jQuery简单自定义图片轮播插件及用法示例
Nov 21 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
Jan 12 Javascript
AngularJS学习第一篇 AngularJS基础知识
Feb 13 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
Jul 04 Javascript
react MPA 多页配置详解
Oct 18 Javascript
JavaScript find()方法及返回数据实例
Apr 30 Javascript
vue项目中使用bpmn-自定义platter的示例代码
May 11 Javascript
如何在vue 中引入使用jquery
Nov 10 jQuery
Knockoutjs 学习系列(二)花式捆绑
Jun 07 #Javascript
Knockoutjs 学习系列(一)ko初体验
Jun 07 #Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
Jun 07 #Javascript
Javascript之Number对象介绍
Jun 07 #Javascript
Javascript之Math对象详解
Jun 07 #Javascript
分享jQuery网页元素拖拽插件
Dec 01 #Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
Jun 07 #Javascript
You might like
PHP错误和异长常处理总结
2014/03/06 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
PHP面向对象精要总结
2014/11/07 PHP
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
2013/07/29 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
jQuery实现连续动画效果实例分析
2015/10/09 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
Python使用email模块对邮件进行编码和解码的实例教程
2016/07/01 Python
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
浅析python协程相关概念
2018/01/20 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
python绘制封闭多边形教程
2020/02/18 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
Loreto Gallo英国:欧洲领先的在线药房
2021/01/21 全球购物
JAVA和C++的区别
2013/10/06 面试题
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
斯福泰克软件测试面试题
2015/02/16 面试题
机电专业大学生求职信
2013/10/04 职场文书
同学聚会通知书
2015/04/20 职场文书
小学德育工作总结2015
2015/05/12 职场文书
祝寿主持词
2015/07/02 职场文书
JavaScript函数柯里化
2021/11/07 Javascript