10

总而言之,我想从 SELECT 输入中删除所有空选项。选择是根据它接收到的对象从其他人编写的脚本动态生成的。我的问题是有时对象有空值,给我留下了一个选择选项集,留下了一些不足之处。

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

所以在测试最初的概念时,我想出了

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

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

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

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

还值得一提的是,“选择”传递的变量是先前在函数中定义的,因此它适用于该部分的概念。只是这么说,所以没有人认为我有些混淆它与其他东西。

4

3 回答 3

19
  • 您可以使用.filter()过滤掉空选项元素并一次将它们全部删除

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

代码:

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

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

演示

于 2012-06-13T20:15:12.810 回答
15

这可以更容易地完成:

Element.find('option[value=""]').remove();
于 2015-07-01T14:07:00.460 回答
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;
}
于 2012-06-13T20:14:14.927 回答