Javascript 使用jQuery根据对其他多选的选择填充多选

Javascript 使用jQuery根据对其他多选的选择填充多选,javascript,jquery,Javascript,Jquery,我在我的主管理区有两个多选择菜单,一个用于页面用户,一个用于页面管理员 我希望它能自动选择用户菜单中与管理菜单中相同的选项,但不能反之亦然 这是我尝试过的代码,但它只是破坏了userOf菜单 <select multiple id="userOf"> <option value="1">Page 1</option> <option value="2">Page 2</option> <option val

我在我的主管理区有两个多选择菜单,一个用于页面用户,一个用于页面管理员

我希望它能自动选择用户菜单中与管理菜单中相同的选项,但不能反之亦然

这是我尝试过的代码,但它只是破坏了userOf菜单

<select multiple id="userOf">
    <option value="1">Page 1</option>
    <option value="2">Page 2</option>
    <option value="3">Page 3</option>
    <option value="4">Page 4</option>
</select>

<br>
<br>
<select multiple id="adminOf">
    <option value="1">Page 1</option>
    <option value="2">Page 2</option>
    <option value="3">Page 3</option>
    <option value="4">Page 4</option>
</select>



<script type="text/javascript">
$("#adminOf").change(function() {
    var selected=[];
    var value;
    $("#adminOf option:selected").each(function() {
        selected.push($(this).attr("value"))
    });

    $("#userOf option").each(function() {
        value=$(this).val();
        if($.inArray(value, selected)){
            $(this).attr("selected","selected");
        }
    });

});
</script>
谢谢,

你的意思是这样的:

var $admins = $("#adminOf");
var $users = $("#userOf");
$admins.change(function(e) {
    $admins.find("option").each(function(i,el){
        var isSelected = this.selected,
            index = i;

        $users.find("option").each(function(i){
            if(index == i){
                this.selected = isSelected;
            }
        });
    });
});
我在IE9中测试了以下代码。它工作得很好。它将把adminOf的选择复制到userOf

$.inArray返回匹配项的索引,如果找不到,则返回-1-1在这样的条件中是“真实的”。查一查!=-它会表现得更像你所期待的。
 $("#adminOf").click(function () {
        var selected = [];
        var value;
        $("#userOf").val([]); //unselect all the elements

        $("#adminOf option:selected").each(function () {
            var valAdmin = $(this).attr("value");
            $("#userOf option").each(function () {
                var valUser = $(this).attr("value");
                if (valAdmin === valUser) {
                    $(this).attr("selected", "selected");
                }
            });
        });
    });