我正在处理店面包(所以我没有编辑核心文件的选项),我们有下拉菜单来选择用户想要名片的正面和背面。有些卡只有一个选项,所以如果只有一个选项,客户想要隐藏下拉菜单。
简单,对吧?
$("select").each(function(){
var count = $(this).children("option").length;
if ( count == 1 ) {
// there's only one option, do something
}
});
这样可行,但问题是系统有时会为某些下拉列表生成空白<option>
,因此实际上有两个选项,但只有一个“真实”选项:
<select>
<option></option>
<option value="Something">A real option</option>
</select>
基本上,我需要选择<select>
只有一个<option>
或两个<option>
且一个只是空的。
我无法完全理解这种if语句的逻辑,所以如果有人有任何建议,我们将不胜感激。
答案 0 :(得分:5)
您可以使用not
方法和:empty
选择器:
$("select").each(function(){
var count = $(this).find("option").not(':empty').length;
if ( count == 1 ) {
alert('okay')
}
});
答案 1 :(得分:0)
改变你计算它们的方式:
$('select').each(function() {
var count = 0;
$(this).children('option').each(function() {
if ( $(this).text() ) // true if not empty
{
++count;
}
});
if ( count == 1 ) // count only includes non-empty options
应该处理它。