【问题标题】:Why isn't this callback resolving properly in jQuery?为什么这个回调不能在 jQuery 中正确解析?
【发布时间】:2009-12-07 12:52:12
【问题描述】:

我有这个代码:

    $(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();
        });

    });

想法是:

  • 点击链接触发(检查!)
  • “块”div 逐渐变为 0(检查!)
  • 内容已关闭(检查!)
  • “块”div 淡出 100 (哎呀!)

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

对此有什么想法吗?

【问题讨论】:

  • .load(... showNewContent()) 应该是 .load(... showNewContent)(注意缺少的括号)。

标签: jquery html


【解决方案1】:

改变这个:

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);  
}

【讨论】:

  • 这仍然会导致它直接弹回。让我把它现场演示......另外,你今晚是 2 对 2 来回答我的问题。感谢您参加我周日晚上的 jQuery 自学教程。
  • 您解决了两个错误中较大的一个。 (另一个是不透明度是 0-1,而不是 0-100。它正在淡入,但很快就从 0-1(在它的路上到 100))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-14
相关资源
最近更新 更多