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

chr*_*ris 9 forms jquery

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

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

因此,在测试我提出的初始概念时

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

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

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

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

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

Did*_*hys 16

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

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

码:

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

$('select option')
    .first()
    .prop('selected', true);?
Run Code Online (Sandbox Code Playgroud)

DEMO


小智 11

这可以更容易:

Element.find('option[value=""]').remove();
Run Code Online (Sandbox Code Playgroud)

  • 对于任何想知道的人来说,这不适用于写成"<option> </ option>"的选项,因为它们根本没有值属性.这里的细微差别是`$("<option> </ option>").attr("value")== undefined`而`$("<option value =''> </ option>"). attr("value")==''` (3认同)