jQuery删除除current之外的选项

时间:2012-02-02 12:12:58

标签: jquery

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

  • 钓鱼
  • 吸烟
  • 飞行

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

我尝试过选择:not(:first-child)但是只有在第一个孩子是选择的时候才会删除,而不是任何其他孩子。

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

2 个答案:

答案 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}}

http://jsfiddle.net/alnitak/ARUmX/

的工作演示

答案 1 :(得分:0)

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

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

来自文档:

  

.not(function(index))

     

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