两个select之间的元素互相移动并保持顺序
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title> </head>
//HTML:
<body> <div
style="border: 1px dashed #E6E6E6; margin: 150px 0px 0px 450px; width: 350px; height: 200px; background-color: #E6E6E6;">
<table width="285" height="169" border="0" align="left"
cellpadding="0" cellspacing="0" style="margin: 15px 0px 0px 15px;">
<tr>
<td width="126">
<!--multiple="multiple" 能同时选择多个 size="10" 确定下拉选的长度--> <select
name="first" multiple="multiple" size=10 class="td3" id="s">
<option ondblclick="MoveSelectedOption(this,'second')" value="选项1">1选项1</option>
<option ondblclick="MoveSelectedOption(this,'second')" value="选项2">2选项2</option>
<option ondblclick="MoveSelectedOption(this,'second')" value="选项3">3选项3</option>
<option ondblclick="MoveSelectedOption(this,'second')" value="选项4">4选项4</option>
<option ondblclick="MoveSelectedOption(this,'second')" value="选项8">8选项8</option>
<option ondblclick="MoveSelectedOption(this,'second')" value="选项A">A选项A</option>
<option ondblclick="MoveSelectedOption(this,'second')" value="选项6">6选项6</option>
<option ondblclick="MoveSelectedOption(this,'second')" value="选项7">7选项7</option>
</select>
</td>
<td width="127" align="left">
<select name="second" size="10"
multiple="multiple" class="td3" id="second">
<option ondblclick="MoveSelectedOption(this,'s')" value="选项9">9选项9</option>
</select>
</td>
</tr>
</table>
</div>
</body>
//JS: <script src="/static/js/jquery_1.12.4_jquery.min.js"></script>
<script type="text/javascript">
$(function () { }); function BindSelectSortElement(target_id, source_id) {
// 排序select 下option元素
let arr_text = []; // 用于获取option text值
let arr_val = {}; // 用于获取原option vlaue值
$("#"+ target_id + ' option').each(function () {
arr_text.push(this.text);
arr_val[this.text] = this.value
});
arr_text_sort = arr_text.sort(function(a,b){return a.toString().localeCompare(b)}); // 排序option text值
console.log(arr_text_sort);
$("#"+ target_id).empty(); // 清空目标select标签下的所有对象
$.each(arr_text_sort, function (k, v) {
let option = "<option value='" + arr_val[v] +"'ondblclick=MoveSelectedOption(this,'"+ source_id +"') >" + v +"</option>";
$("#"+ target_id).append(option); // 将排序后的option 重新添加至select标签下
})
} function MoveSelectedOption(ele,target_id) {
// 移动select元素
let source_id = $(ele).parent().attr('id');
let option = "<option value='" + $(ele).val() +"'ondblclick=MoveSelectedOption(this,'"+ source_id +"') >" + $(ele).text() +"</option>";
$("#"+ target_id).append(option);
$(ele).remove();
BindSelectSortElement(target_id, source_id) // 移动后重新排序显示
} </script> </html> 备注:可以方法比较笨,如有简单的方法还请各位看客告知,谢谢!
具体细节可以在进一步优化,比如触发方法可以通过jQuery的选择option后点击触发,不需要每个option 写一个双击触发方法
*********************************************************** 学习永远不晚。——高尔基 ***********************************************************
两个select之间的元素互相移动并保持顺序的更多相关文章
- jQuery获取Radio选择的Value值||两个select之间option的互相添加操作(jquery实现)
jQuery获取Radio选择的Value值: 1. $("input[name='radio_name'][checked]").val(); //选择被选中Radio的Val ...
- 两个Select 之间的值的传递
运行效果: 下面是代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML ...
- python基础===两个list之间移动元素
首先我们先了解一下list的几个常用函数: a = [123,456,"tony","jack"] #list中增加元素a.append("www&q ...
- activity生命周期分析(两个activity之间跳转的生命周期执行顺序)
NoteMainActivity点击跳转至NoteListActivity 我们都了解: 当A界面点击进入B界面时,此时 A===onPause--->onStop ...
- 软件项目技术点(1)——d3.interpolateZoom-在两个点之间平滑地缩放平移
AxeSlide软件项目梳理 canvas绘图系列知识点整理 软件参考d3的知识点 我们在软件中主要用到d3.js的核心函数d3.interpolateZoom - 在两个点之间平滑地缩放平移.请 ...
- JS之document例题讲解1(两张表之间数据转移、日期时间选择、子菜单下拉、用div做下拉菜单、事件总结)
作业一:两个列表之间数据从一个列表移动到另一个列表 <div style="width:600px; height:500px; margin-top:20px"> & ...
- DOM的小练习,两个表格之间数据的移动
本次讲的是两个表格之间数据的移动,左边的表格移动到右边,并且左边表格移动内容消失. <head> <meta http-equiv="Content-Type" ...
- sql返回两个日期之间的日期_函数实现
-- Description:返回两段日期之间的所有日期 <Description,,>-- ============================================ ...
- Oracle 两个表之间更新的实现
Oracle 两个表之间更新的实现 来源:互联网 作者:佚名 时间:2014-04-23 21:39 Oracle中,如果跨两个表进行更新,Sql语句写成这样,Oracle 不会通过.查了资料,S ...
随机推荐
- Android为TV端助力 SharedPreferences 轻量级存储!
首先在当前进程也就是当前的项目里面进行存储 SharedPreferences.Editor editor = mContext.getSharedPreferences("tvplay&q ...
- leetcode-67.二进制求和
leetcode-67.二进制求和 Points 数组 数学 题意 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = &qu ...
- (python)数据结构---集合
一.描述 set翻译为集合 set是可变的.无序的.不可重复的 set的元素要求可哈西(不可变的数据类型可哈西,可变的数据类型不可哈希) set是无序的,因此不可以索引,也不可以修改 线型结构的查询时 ...
- 【MM系列】SAP基本计量单位更改
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP基本计量单位更改 前言部分 ...
- Linux CFS调度器之队列操作--Linux进程的管理与调度(二十七)
1. CFS进程入队和出队 完全公平调度器CFS中有两个函数可用来增删队列的成员:enqueue_task_fair和dequeue_task_fair分别用来向CFS就绪队列中添加或者删除进程 2 ...
- AI学习---数据读取&神经网络
AI学习---数据读取&神经网络 fa
- [转]JIRA 7.2.6与Confluence 6.0.3的安装与配置之MS SQL Server版
相关软件版本信息 说明:下方软件可以点击链接,通过百度云盘进行下载. 操作系统:Windows 10(密码:foht)或者Windows Server 2012(密码:lsad): 数据库:SQL S ...
- python——函数之装饰器
1 问题 实际生活中,我们很难一次性就把一个函数代码写得完美无缺.当我们需要对以前的函数添加新功能时,我们应该怎么做? 2 问题解决思路 (1)可以直接修改原来的函数,在函数内直接修改.当我们对多个函 ...
- C# -- 使用XmlDocument或XDocument创建xml文件
使用XmlDocument或XDocument创建xml文件 需引用:System.Xml; System.Xml.Linq; 1.使用XmlDocument创建xml(入门案例) static vo ...
- XSS 漏洞原理及防御方法
XSS跨站脚本攻击:两种情况.一种通过外部输入然后直接在浏览器端触发,即反射型XSS:还有一种则是先把利用代码保存在数据库或文件中,当web程序读取利用代码并输出在页面上时触发漏洞,即存储型XSS.D ...