2013-07-29 49 views
0

作为一个练习,我试图在navbar契约中创建内容div的链接,使用ajaxpage()在#content中加载页面,然后将其向下滑动。我使用以下内容:用jquery替换href点击行为

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

$(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属性?

+1

您的AJAX调用可能会失败,后续代码为'ajaxpage'函数。我也可以告诉你这个调用可能是异步的,所以你的'slideDown'应该在AJAX回调中。 – tymeJV

+0

是的,我正在修复它! ajax调用工作正常,因为我可以在href中使用它,而不会失败:href =“javascript:ajaxpage('home.php','content')” –

+0

您可以在小提琴中共享html吗? –

回答

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()

0

当你确定href时,你应该点击使用attr()之后。

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