1

ユーザーがクリックすると、div. データがサーバーから完全にフェッチされるまで待機中のメッセージをユーザーに表示し、それをユーザーに表示したいと考えています。

urlまた、サーバーの負荷を軽減するために、スライド ダウン イベントとスライド アップ イベントの両方ではなく、結果ボックスがダウン (スライド ダウン) したときにのみデータが発生するようにしたいと考えています。

私のコードはここにありますが、2番目の部分を実装する方法がわかりません:

$(document).ready(function() {
        $("#prereq").hide();
        $("#prereqlink").click(function() {
             $("#prereq").html("please wait ...");
             $("#prereq").slideToggle("slow");

             $.ajax({ url:"referee.php",
                      success:function(data) {
                              $("#prereq").html(data);
                    }
             });

        });
 });

手伝ってくれませんか??

4

3 に答える 3

2

$( "#prereq")。is( ":visible")を使用して、方法を見つけました。確認できます。

于 2011-02-20T07:04:41.430 に答える
2

このようなことを試してみてください。ただし、よくわからないことに注意してください

var mode = 'down';

$(document).ready(function() {
    $("#prereq").hide();
    $("#prereqlink").click(function() {
         $("#prereq").html("please wait ...");
         $("#prereq").slideToggle("slow");
    if(mode == 'down'){
         $.ajax({ url:"referee.php",
                  success:function(data) {
                        mode = 'up';
                          $("#prereq").html(data);
                }
         });
    }
    else{
        mode = 'down';
    }

    });
});
于 2011-02-20T06:13:22.940 に答える
1
    $(document).ready(function() {
    $("#prereq").hide();
    /* OR to add class to initialize as required 
     $("#prereq").addClass(("downMode").hide(); 
    */
    $("#prereqlink").click(function() {
         $("#prereq").slideToggle("slow", function(){
             $.ajax({ url:"referee.php",
                  beforeSend: function() {
                   if ($("#prereq").hasClass("downMode")){
                     $("#prereq").html("please wait ...").show();   
                     return true;
                   }
                   /* cancel ajax request */
                   return false ;   
                  },
                  success:function(data) {
                   $("#prereq").html(data);
                  }
             });
        }).toggleClass("downMode");
    });
 });

編集:
beforeSend を削除して、slideToggle コールバックの $.ajax(...) の前にクラスを確認できると思います。 if ($(this).is('.downMode')){ $.ajax(....

于 2011-02-20T06:55:09.627 に答える