jQuery删除除current之外的选项

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

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

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

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

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

试试这个:

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

即对于not this每个 ,获取它的children .value ,但filter .value与我的不同的那些,并remove它们。

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

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

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

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

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

还有.not()方法和选择器。

http://api.jquery.com/not/

来自文档:

.not(function(索引))

function(index)一个函数,用作集合中每个元素的测试。 这是当前的DOM元素。