0

我的选择都有一个带有文本“全部”且没有值的顶部选项,但我需要编写一些适用于这些选择中所有其他选项的代码。

我的代码如下,但我宁愿取消第二行的条件。我确实尝试过使用 jQuery 的 ':not' 选择器,但不知道如何为缺失/空/未定义值配置它。如果我明确地将值设置为空字符串“”然后使用:not 会更好吗?

_.each($(select).find('option'), function(option) {
    if (optionVal = $(option).val()) {

请原谅我使用 _.each 而不是 jQuery 的 each,我们宁愿保持一致,因为我们使用下划线比迭代 jQuery 匹配集更多。

4

4 回答 4

5

在我的脑海中,您可以使用以下任何一种:

$(select).find('option[value!=""]');

或者

$(select).find('option:not([value=""])');

返回不是的选项<option value="">All</option>

如果第一个option始终是无价值的选项,您还可以使用:

$(select).find('option:not(:eq(0))')

选择所有option不是first-child.

于 2013-09-13T18:28:49.413 回答
1

如果要从每个 Select 元素中排除第一个 Option,可以使用:not()选择器和.find()方法:

$('select').find('option:not(:first)');  

如果要过滤具有价值的选项,可以使用.filter()方法:

$('select option').filter(function() {
   return $.trim(this.value).length;
});

请注意,在遍历 jQuery 集合时最好使用 jQuery 的.each()方法,否则您将失去 jQuery 提供的可链接性。

于 2013-09-13T18:27:46.903 回答
0
$(select).find('option[value]'); // selects all <option>s with value

如果我正确地理解了这个问题。

于 2013-09-13T18:28:13.533 回答
0

你可以试试这个

HTML:

<select>
    <option>All</option>
    <option value>0</option>
    <option value=1>One</option>
    <option value=2>Two</option>
</select>

JS:这将只返回最后两个选项(一和二)

$('select option').filter(function(){
    return this.hasAttribute('value') && this.value.length;
});

过滤missing/null/undefined值的选项。这是一个例子

于 2013-09-13T18:46:46.067 回答