两个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">
                     <select
                    name="first" multiple="multiple" size=10 class="td3" id="s">
                    <option ondblclick="MoveSelectedOption(this,'second')" value="选项1">1选项1option>
                    <option ondblclick="MoveSelectedOption(this,'second')" value="选项2">2选项2option>
                    <option ondblclick="MoveSelectedOption(this,'second')" value="选项3">3选项3option>
                    <option ondblclick="MoveSelectedOption(this,'second')" value="选项4">4选项4option>
                    <option ondblclick="MoveSelectedOption(this,'second')" value="选项8">8选项8option>
                    <option ondblclick="MoveSelectedOption(this,'second')" value="选项A">A选项Aoption>
                    <option ondblclick="MoveSelectedOption(this,'second')" value="选项6">6选项6option>
                    <option ondblclick="MoveSelectedOption(this,'second')" value="选项7">7选项7option>
                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选项9option>
                    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 = "";
            $("#"+ target_id).append(option);    // 将排序后的option 重新添加至select标签下
        })
    }

    function  MoveSelectedOption(ele,target_id) {
     // 移动select元素
        let source_id = $(ele).parent().attr('id');
        let option = "";
        $("#"+ target_id).append(option);
        $(ele).remove();
        BindSelectSortElement(target_id, source_id)    // 移动后重新排序显示
    }

script>

html>


备注:可以方法比较笨,如有简单的方法还请各位看客告知,谢谢!
   具体细节可以在进一步优化,比如触发方法可以通过jQuery的选择option后点击触发,不需要每个option 写一个双击触发方法
***********************************************************

 学习永远不晚。——高尔基

***********************************************************