2

テーブルに ajax リンクがあり、クリックすると要素が削除されます。すべての要素が削除されたときにテーブルが非表示になるようにしたいと思います。ajax 呼び出しにイベントを追加できません。つまり、ajax の成功やその他のパラメーターや関数を編集または変更することはできません。テーブルを独自にチェックし続け、テーブル本体に要素がない場合はテーブルを非表示にし、エントリが作成されるとそれ自体を表示するものが必要です

4

4 に答える 4

3

setInterval()関数を繰り返し呼び出して、チェックを行うことができます。次に.toggle()、ブール値を取るバリエーションを使用します。

setInterval(function() {
    var $table = $('.tablesorter');
    $table.toggle($table.find('tbody').children().length > 0);
}, 500);

これにより、毎秒約 2 回 (500 ミリ秒ごとに 1 回) チェックされます。2 番目の引数を変更して、チェックの頻度を増減できます。

于 2013-04-08T13:26:23.940 に答える
1

ここでは、たとえば、テーブル クラスの名前はtable

$('.table > tbody:empty').parent().hide();

すべてのテーブルをチェックする場合:

// Call the CheckTables function after 100 milliseconds
setInterval(CheckTables, 100);

function CheckTables()
{
    $( "table " ).each(function( index ) {
      $(this).find('tbody:empty').parent().hide();
      $(this).find('tbody:not(:empty)').parent().show();
    });
}
于 2013-04-08T13:25:18.557 に答える
1

これを試して

$('.className> tbody:empty').parent().hide();

また

$('.className tr').each(function() {
    if ($(this).find('td:empty').length) $(this).remove();
});​
于 2013-04-08T13:25:37.420 に答える
1

これを試して:

$(document).ajaxComplete(function() {
   $('table').each(function(){
      if($('tbody:empty',this))
         $(this).hide();
      else $(this).show();
   });
 });
于 2013-04-08T13:37:00.470 に答える