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()); });
还有.not()方法和选择器。
来自文档:
.not(function(索引))
function(index)一个函数,用作集合中每个元素的测试。 这是当前的DOM元素。