0

外部phpファイルからコンテンツをロードするスクリプトを書きました。私はjquery1-9-1を使用しています。私のスクリプトは、ボタンを 2 回クリックする瞬間を除いて、正常に動作します。アニメーションが始まるまでに 0.5 秒の遅延があります。何が問題で、どこにあるのかはわかっていると思います。$("#header").animate({marginTop: "10px"...最初のクリックで実行する必要があります。これが一度クリックされたら、無効にする必要があります。誰がそれを解決する方法を知っていますか? ドンジャッジ私はとても厳しいと申し訳ありませんが私の英語

$(document).ready(function () {
    var content = $("#content");
    $("#main_menu a").click(function () {
        var id = this.id;
        $("#header").animate({
            marginTop: "10px"
        }, 500, function () {
            $("#content").fadeOut(500, function () {
                $("#content").load(id + ".php")
                $("#content").fadeIn(500)
            })
        })
    })
})
4

2 に答える 2

2

キャッシングの使用を拒否し、後で繰り返しcontent = $("#content")呼び出す場合、キャッシングのポイントは何ですか?$("#content")

とにかく、それが最初の実行かどうかを示す変数が必要です。

    $(function () {
        var content = $("#content"), isfirst = true;
        $("#main_menu a").click(function () {
            var id = this.id,
                reveal = function() {
                    content.fadeOut(500, function () {
                        content.load(id + ".php")
                        content.fadeIn(500)
                    });
                };
            if( isfirst) $("#header").animate({marginTop: "10px"}, 500, reveal);
            else reveal();
            isfirst = false;
        });
    });
于 2013-04-01T23:04:31.853 に答える
0

その場合、ロードされたかどうかを追跡する必要があります。単純な変数といくつかのクロージャーでそれを行う必要があります。

var isLoaded = false;
$("#main_menu a").click(function () {
          var id = this.id;
          if (!isLoaded) {
              $("#header").animate({
                 marginTop: "10px"
              }, 500);
              isLoaded = true;
          }
          $("#content").fadeOut(500, function () {
          $("#content").load(id + ".php")
          $("#content").fadeIn(500)
       })
  });
于 2013-04-01T23:03:30.440 に答える