我正在尝试用文本消息替换所有空的选择框,但它无法正常工作。这是我的jQuery:
var s = $("table.preference select option");
if(s.length == 0){
s.parents("td").html("No more preferences to add!");
}
我也试过了:
$("table.preference select option").each(function(){
if($(this).length == 0){
$(this).parents("td").html("No more preferences to add!");
}
});
但两者都不起作用。我在两个不同的表中有两个select
标签 - 我需要jQuery来查找任何空的选择框并用文本消息替换其表格单元格。有人知道我哪里出错吗?
答案 0 :(得分:2)
如果表中的所有select-elements之一中至少有一个option-element,那么第一种方法将无效。
不使用$ .each()的解决方案:
$("table.preference select:not(:has(option))")
.parents("td").html("No more preferences to add!");
答案 1 :(得分:1)
试试这个:
$("table.preference select").each(function() {
if ($(this).children("option").length === 0) {
$(this).parents("td").html("No more preferences to add!");
}
});
根据@ Kon的建议,如果你想查看可能的optgroup
标签,你可以试试这个:
$("table.preference select").each(function() {
if ($("option", this).length === 0) {
$(this).parents("td").html("No more preferences to add!");
}
});
这会检查options
内部select
以及任何optgroups
内的{{1}}。
答案 2 :(得分:1)
尝试这样的事情:
$("table.preference select").each(function(){
if($(this).children().length == 0) {
$(this).parents("td").html("No more preferences to add!");
}
});
答案 3 :(得分:1)
您是否尝试过其他选择器?在我的头顶:
var s = $("table.preference select:empty");
if(s.length != 0){
...
}
答案 4 :(得分:0)
这适合我。
$("div>select:not(:has(option))").hide();
$('div').filter(function () {
if($(this).text().trim().toLowerCase() === 'abc'){
$(this).hide();
};
})