为什么这个回调在jQuery中没有正确解析?

时间:2009-12-07 04:36:25

标签: jquery html

我有这段代码:

    $(document).ready(function(){
        $(".links a").click(function(e){
            var toLoad = "products.html #" + this.id;
            $('#block').fadeTo('fast',0,loadContent);

            function loadContent() {  
                    $('#block').load(toLoad,'',showNewContent())  
                }  
            function showNewContent() {  
                    $('#block').fadeTo('slow',100);  
                }
            e.preventDefault();
        });

    });

这个想法是:

  • 点击要触发的链接(检查!)
  • “block”div淡化为0(检查!)
  • 内容被切换(检查!)
  • “block”div淡化100 (哎呀!)

我看到的行为是淡出,然后在fadeOut完成后立即弹回新内容。

对此有何想法?

1 个答案:

答案 0 :(得分:2)

改变这个:

function loadContent() {
  $('#block').load(toLoad,'',showNewContent())  
} 

function loadContent() {
  $('#block').load(toLoad,'',showNewContent)  
} 

解释:你是立即调用函数(并将其不存在的返回传递给load())而你想要传递函数 (而不是它返回的内容)作为回调。

注意:fadeTo()州:

  

褪色的不透明度(来自的数字)   0到1)。

所以你应该改变:

function showNewContent() {  
  $('#block').fadeTo('slow',100);  
}

function showNewContent() {  
  $('#block').fadeTo('slow', 1);  
}