0

作为一个练习,我试图让导航栏中的链接与内容 div 相一致,使用 ajaxpage() 在#content 中加载页面,然后将其向下滑动。我正在使用以下内容:

编辑:我意识到我可能需要回调函数中的所有内容,所以我解决了这个问题。但是,电话仍然无法正常工作。

$(document).ready(function()
  {
  $("a.link").click(function() { 
    //...
    return false;
});
  $("#navbar a").click(function(){
    $("#content").slideUp(500,function(){
        var a_href = $(this).attr('href');
        ajaxpage(a_href, 'content');
        $("#content").slideDown(500);
        });
  });
});

链接为:

<a class="link" href="home.php">Home</a>

当我测试它时,内容 div 正确地向上滑动,但随后它停留在那里,没有其他任何事情发生。我在这里做错了什么?

编辑:经过一些调试,似乎这是罪魁祸首:

var a_href = $(this).attr('href');

当我声明该变量并通过警报()发送它时,它显示“未定义”。我猜我没有正确抓住这个属性,所以这就是它挂断的地方!我将如何正确获取您单击的链接的 href 属性?

4

2 回答 2

2

我很确定你真正想要的是捕获被点击元素的 href 。

$("#navbar a").click(function(){
    var a_href = $(this).prop('href');
    $("#content").slideUp(500,function(){
        ajaxpage(a_href, 'content');
        $("#content").slideDown(500);
    });
});

但是我们很清楚,在 ajax 调用返回任何数据之前,$('#content').slideDown(500); 即将开火。您需要添加一个回调来ajaxpage接受作为 的成功函数,$.ajax()以便您可以确定何时接受slideDown()

于 2013-07-29T02:26:48.707 回答
0

当你确定 href 你应该点击后使用attr().

$("#navbar a").click(function(){
    var a_href = $(this).attr('href');
    $("#content").slideUp(500,function(){
        ajaxpage(a_href, 'content');
        $("#content").slideDown(500);
        });
  });
于 2013-07-29T02:29:49.490 回答