1

私は多くの場所を検索しましたが、適切な方法を見つけることができませんでした。
テーブルの構造は次のとおりです。

 <tr class="header">
      <td colspan="9">Header 1</td>
 </tr>
 <tr class="filter">
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
 </tr>
 <tr class="filter">
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
      <td>lorem ipsum</td>
 </tr>
 <tr class="header">
      <td colspan="9">Header 2</td>
 </tr>

不要な行を (入力ボックスで) フィルタリングするために、ライブ テーブル フィルター プラグイン (フィルター クラスを持つ td 要素に影響を与える) を使用しています。
ご想像のとおり、プラグインはすべてtr.filterの要素を検索し、一致しない場合はフィルター クラスの行を非表示にします。
ただし、すべてのtr.filter要素が非表示になった後でも、ヘッダー行は引き続き表示されます。
だから私はそれが欲しいです:すべての要素がこの要素を非表示にする次の要素まで非表示になっているかどうか、すべての要素を
確認してください。例: ヘッダー1行とヘッダー 2行 の間に表示される tr 要素がない場合、ヘッダー 1行も非表示になります。tr.headertr.filtertr.headertr.header

私はこれについて次のことを試みましたが、成功しませんでした:

 $('tr.header').each(function(){
      if ($(this).nextUntil("tr.header").is(":hidden")){
      //i tried if ($(this).nextUntil("tr.header").css('display') == 'none'){
           $(this).hide();
      } else {
           $(this).show()
      }
 });
4

1 に答える 1

2

これを試して -

$('tr.header').each(function(){
      if ($(this).nextUntil("tr.header").filter(function(){
           return $(this).is(':visible');
      }).length == 0){
           $(this).hide();
      } else {
           $(this).show()
      }
});
于 2013-08-04T19:32:28.867 に答える