2013-07-29 77 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); 
     }); 
    });