jQuery删除除current之外的选项

Jad*_*ric 1 jquery

我有4个选择框,每个框包含完全相同的数据:

  • 骑术
  • 钓鱼
  • 抽烟
  • 飞行

如果我在选择框[0]并选择"骑马",我想从剩下的每个选项中删除该选项,除了我有效的当前选择框.

我已经尝试过选择:not(:first-child)但这将删除,只有第一个孩子是选择,而不是任何其他孩子.

基本上,我需要从所有下拉列表中删除选定的选项,除了我选择的选项.

Aln*_*tak 5

试试这个:

$('#select1').on('change', function() {
    var val = this.value;
    $('select').not(this).children().filter(function() {
        return this.value === val;
    }).remove();
});
Run Code Online (Sandbox Code Playgroud)

即每一个<select>not this,得到它的children,但filter它的那些.value是不是和我一样,和remove他们.

http://jsfiddle.net/alnitak/CJYWn/的工作演示

如果您需要在第一个条目更改为其他条目时重新添加元素,您可能会考虑只是克隆整个元素,select同时过滤掉不需要的项目.

在这种情况下,过滤器需要!==,因为我们需要除了匹配的元素之外的所有元素,即

$('#select1').on('change', function() {
    var val = this.value;
    $('select').not(this).empty().append($(this).children().filter(function() {
        return this.value !== val;
    }).clone());
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/alnitak/ARUmX/的工作演示