我有4个选择框,每个框包含完全相同的数据:
如果我在选择框[0]并选择“骑马”,我想从剩下的每个选项中删除该选项,但我当前选择框已激活。
我尝试过选择:not(:first-child)但是只有在第一个孩子是选择的时候才会删除,而不是任何其他孩子。
基本上,我需要从所有下拉列表中删除所选的选项,除了我选择的那个。
答案 0 :(得分:5)
试试这个:
$('#select1').on('change', function() {
var val = this.value;
$('select').not(this).children().filter(function() {
return this.value === val;
}).remove();
});
即。对于<select>
的每个not this
,请children
获取filter
,.value
remove
与我的select
不同,!==
它们。
http://jsfiddle.net/alnitak/CJYWn/
的工作演示如果您需要在第一个条目更改为其他内容时重新添加元素,您可能会考虑克隆整个第一个$('#select1').on('change', function() {
var val = this.value;
$('select').not(this).empty().append($(this).children().filter(function() {
return this.value !== val;
}).clone());
});
,同时过滤掉不需要的项目。
在这种情况下,过滤器需要{{1}},因为我们希望所有元素除了匹配的元素,即
{{1}}的工作演示
答案 1 :(得分:0)
还有.not()方法和选择器。
来自文档:
.not(function(index))
function(index)一个函数,用作集合中每个元素的测试。 这是当前的DOM元素。