0

我想要做的是在“#studentadd”选择框中显示哪些选项,我希望能够从#studentselect选择框中删除所有匹配选项并清空#studentadd选择框。但目前它没有这样做。

我究竟做错了什么?

以下是两个选择框的 html:

下面是选择框#studentadd

<select multiple="multiple" name="addtextarea" id="studentadd" size="10">
    <option value='1'>u08743 - Joe Cann</option>
    <option value='4'>u03043 - Jill Sanderson</option>
    <option value='7'>u08343 - Craig Moon</option>
</select>

以下是学生应附加到的选择框:

    <select id="studentselect" name="studenttextarea">
        <option value='1'>u08743 - Joe Cann</option>
        <option value='4'>u03043 - Jill Sanderson</option>
        <option value='7'>u08343 - Craig Moon</option>
</select>

下面是jquery:

$('#studentadd option').attr('selected', 'selected');

var selectedOption = $('select#studentadd');
$('select#studentselect').remove(selectedOption.html());
4

3 回答 3

2

尝试

var selectedOption = $('#studentadd').find(':selected');
var studentSelect = $('#studentselect');
selectedOption.each(function(){
    studentSelect.find('[value="'+this.value+'"]').remove();
});

演示

于 2013-01-12T23:21:06.170 回答
1

如果两个列表中的数据相同,它将尝试依赖 value 属性:

$('#studentadd').change(function () {  
  var value = $(this).find("option:selected").val();
  $('#studentselect option[value="' + value + '"]').remove();
});

// 更新:处理多个元素的选择

$('#studentadd').change(function () {
  $(this).find("option:selected").each(function () {
    $('#studentselect option[value="' + $(this).val() + '"]').remove();
  });
});

在行动中看到它:http: //jsfiddle.net/EvpDx/2/

于 2013-01-12T23:20:06.947 回答
0

如果您想从 SELECT 中删除选定的项目(无论是多选还是单选),您可以使用:

$('#studentadd option').attr('selected', 'selected');  //Preparation
$('#studentadd option:selected').remove()              //Choose all selected OPTIONs from item with ID=studentadd and remove it
于 2013-01-12T23:20:33.717 回答