在带有空/空值的Select中的jQuery find选项将其删除,并在其后面选择带有值的第一个选项

时间:2012-06-13 20:04:32

标签: jquery forms

总而言之,我想从SELECT输入中删除任何和所有空选项。 select是根据其接收的对象从其他人编写的脚本动态生成的。我的问题是有时候对象有空值,留给我一个选择选项集,留下一些需要的东西。

无论如何,几乎每次集合中的第一个选项都是空的。所以我想删除它并将selected="selected"应用于删除第一个选项后出现的第一个选项。同时删除任何其他具有空值的可能性。

因此,在测试初步概念时,我想出了

$(select).each(function(){
                if ($(this+' option:selected').val() == '')
                {
                    //this assumes that your empty value is ''
                    $(this).remove();
                }
            });

似乎删除了整个select,我知道它的原因this被定义为select本身。

我也试过了 $(select +'option[value=""]').remove();

目前我只是试图让它删除带有空值的选项,在我能够实现之后,我将弄清楚如何正式选择列表中的第一项,就DOM而言。

还值得一提的是'select'传递的变量先前在函数中定义,因此它适用于该部分概念。只是说,所以没有人认为我有点混淆别的东西。

3 个答案:

答案 0 :(得分:16)

  • 您可以使用.filter()过滤掉空选项元素并立即将其全部删除

  • 使用.prop()设置特殊属性,例如selected

代码:

$('select option')
    .filter(function() {
        return !this.value || $.trim(this.value).length == 0;
    })
   .remove();

$('select option')
    .first()
    .prop('selected', true);​

DEMO

答案 1 :(得分:10)

这可以更轻松地完成:

Element.find('option[value=""]').remove();

答案 2 :(得分:0)

POJS救援!

function fixSelectOptions(SelectId){
 var sel = document.getElementById(SelectId);
 for(var i = 0; i < sel.options.length; i++){
  if(sel.options[i].value === ""){
   sel.remove(i--);//decrease i to preserve future index references after removal
  }
 }
 sel.options.selectedIndex = 0;
}