使用 jQuery 迭代并有条件地隐藏多个元素
Iterating and conditionally hiding multiple elements with jQuery
if ( $("table tbody tr:visible").length === 0 ) {
$("table thead").hide();
} else {
$("table thead").show();
}
我想隐藏具有 tbody
的所有 table
元素的 thead
元素,仅隐藏 tr
元素。
上面的代码适用于一个 table,但不适用于多个 table。我有很多 table,此代码一次搜索所有 table 中的所有 tbody tr
,而不是每个 table。
我是否需要获取 $("table").length
并检查每个是否可见 tr
?有更简单的解决方案吗?
您必须能够识别您刚刚处理的 table。我们可以通过使用每个来做到这一点:
$("table").each(){
var myTable = $(this);
if ( myTable.find("tbody tr:visible").length === 0) {
myTable.find("thead").hide();
}
else {
myTable.find("thead").show();
}
}
您也可以在代码中没有显式循环的情况下完成此操作。 jQuery 的 :has()
选择器可以在一行中为您解决这个问题。
$("table:not(:has(tbody tr:visible)) thead").hide();
使用它,您可以直接查询其父表在其 tbody
.
中不包含任何可见 tr
元素的所有 thead
元素
您可以在实际操作中看到这一点 here。
if ( $("table tbody tr:visible").length === 0 ) {
$("table thead").hide();
} else {
$("table thead").show();
}
我想隐藏具有 tbody
的所有 table
元素的 thead
元素,仅隐藏 tr
元素。
上面的代码适用于一个 table,但不适用于多个 table。我有很多 table,此代码一次搜索所有 table 中的所有 tbody tr
,而不是每个 table。
我是否需要获取 $("table").length
并检查每个是否可见 tr
?有更简单的解决方案吗?
您必须能够识别您刚刚处理的 table。我们可以通过使用每个来做到这一点:
$("table").each(){
var myTable = $(this);
if ( myTable.find("tbody tr:visible").length === 0) {
myTable.find("thead").hide();
}
else {
myTable.find("thead").show();
}
}
您也可以在代码中没有显式循环的情况下完成此操作。 jQuery 的 :has()
选择器可以在一行中为您解决这个问题。
$("table:not(:has(tbody tr:visible)) thead").hide();
使用它,您可以直接查询其父表在其 tbody
.
tr
元素的所有 thead
元素
您可以在实际操作中看到这一点 here。