查找所有可见的选项与4个选项
问题描述:
什么是最短的方式获得所有selects
正好4 options
?查找所有可见的选项与4个选项
否则我将不得不每次循环select
并获得$find('option').length == 4
这似乎并不奏效:
$.grep($("select:visible"), function() {
return $(this).find('option').length == 4;
});
答
表达:has(option:eq(3))
将针对其具有交替 - 以免4 option
子元件和表达:not(:has(option:eq(4)))
将排除具有5 option
子元素的元素。
$("select:visible:has(option:eq(3)):not(:has(option:eq(4)))").css('color', 'red')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<select>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
<select>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
您还可以使用.filter()
$("select:visible").filter(function() {
return $(this).find('option').length == 4;
}).css('color', 'red')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<select>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
<select>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
答
您的代码也是正确的唯一的问题是你需要用你的S使用某些元素选择元素可以使$ .find函数起作用。 例如
//Going to add a div to wrap all elememts
var myDiv = $("<div><select><option>1</option><option>2</option><option>3</option></select><select><option>1</option><option>2</option><option>3</option><option>4</option></select><select><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option></select><div>");
$.grep(myDiv.find("select"),(el)=>$(el).find("option").length===4);
如何添加一个类(即OPT4)当您创建/填充它们?那么你可以只使用一个类选择器 –
@mike_t对不起,它是在扩展 – user5858
你试过['.has()'](http://api.jquery.com/has/)方法吗? – agrm