2011-08-07 73 views
8

我正在一個網站上點擊某個鏈接將滑動登錄面板。我正在使用event.preventDefault()來停止網站重定向以及動畫事件以將面板向下滑動。點擊鏈接時,面板滑下並且URL保持不變。使用JQuery preventDefault(),但仍然添加到URL的路徑

當鏈接被點擊時,我想要發生的事情是面板按照正常情況進行動畫製作,但鏈接的href屬性要在url中顯示。在這種情況下,它會是這樣的:http://domain_name/#login

這裏是我有去,現在的代碼:

$("#login_link").click(function (e) { 
    e.preventDefault(); 
    $("#login").animate({ 'margin-top': 0 }, 600, 'linear'); 

    window.location.hash = $(this).attr('href'); 
}); 

此代碼成功添加「#login」爲所需的URL,但它跳過登錄面板的動畫。點擊鏈接時,面板會立即出現。我想保留動畫和更新後的網址行爲。這可能嗎?

+0

這可能是一個愚蠢的問題,但是你確定jquery動畫在window.location.hash代碼行被註釋掉時工作嗎? –

+4

你能接受你問過的問題的答案嗎?我相信他們中至少有一些人有正確的答案......人們普遍喜歡對他們的工作的認可。 – tjameson

+0

當你只是省略'e.preventDefault()'行時會發生什麼? –

回答

2

使用以下代碼。只需在動畫完成事件中調用哈希即可。

$("#login_link").click(function (e) { 
    e.preventDefault(); 
    $("#login").animate({ 'margin-top': 0 }, 600, 'linear', function(){ window.location.hash = $(this).attr('href'); }); 

}); 
+0

我刪除我的,我所以你只有在我張貼後:) – Dementic

1

我不知道,但你可能蜜蜂尋找這個功能

1>當一些身體點擊登錄,網址變更abc.com/#login,並登錄面板動畫出現

2>當某些機構僅在url中鍵入abc.com/#login時,您會期待相同的行爲(登錄面板的動畫)。

你目前正在做什麼只適用於案例1並且不適用於案例2。如果你想動畫(或其他)都可以同時工作,點擊或只輸入url。您需要一些機制來檢測哈希變化。

有一個著名插件http://benalman.com/projects/jquery-bbq-plugin/

去看看這個插件,並看看如何做事。如果您發現任何難以理解的事情,我們就在這裏!

相關問題