0

我已经编写了从外部 php 文件加载内容的脚本。我正在使用 jquery1-9-1。我的脚本工作正常,除了我第二次单击按钮的那一刻。动画开始前有 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 回答