0

この Jquery では、以前の reg_user_table が表示されていたのと同じ場所に active_user_table を表示しています。したがって、最初に reg_user_table を表示しないようにし、次に active_user_display をブロックとして設定します。その後、正常に動作している getJSON を発行しています。問題は、テーブルがアタッチされている場合と、すべてのテーブルにクラス active_table をアタッチして、すべてのテーブルを数えてそのうちの 1 つだけを表示し、DOM から他のテーブルを削除またはデタッチできるようにする場合です。クラスactive_tableが最後のもの以外のすべてに適用されるようにすることはできません。最近追加されたクラスにはactive_tableが表示されていません。

 $('#reg_user_table').hide();
 if($('#active_user_table').is(':hidden')){   
     $('#active_user_table').css("display","block");
     $.getJSON("/siteadmin/active_user_count", function(response_data)
     { 
         var data = [response_data.today,response_data.Sevendays,response_data.Month];
         var caption = ['Active Today','Active Past 7 Days','Active This Month'];
         var $table = $('<table/>'); 

         for(var i = 0; i<3; i++) { 
             $table.append('<tr><td><h3>'+caption[i]+':'+'</h3></td><td><h3>'+ data[i] + '</h3></td></tr>');
         } 
         $('#active_user_table').append($table);
     });

     $('#active_user_table').children().addClass("active_table");
     console.log("Hello World!" + $('.active_table').length); 
}
4

1 に答える 1

1

非同期の世界へようこそ。Your$.getJSONは、最後の 2 行の後に実行されます。それらを成功コールバック内に配置します

$.getJSON("/siteadmin/active_user_count", function (response_data) {
    //...
    $('#active_user_table').append($table);

    // put it here....  
    $('#active_user_table').children().addClass("active_table");
    console.log("Hello World!" + $('.active_table').length);
});
于 2013-02-13T10:51:43.657 に答える