2011-06-22 44 views
1

可能重複:
Stop default hashtag behavior with jquery如何停止哈希標籤的默認點擊行爲?

我有一個加載DIV到使用頁面.load()在鏈接上一些jQuery代碼,還增添了主題標記的URL分頁/書籤的目的;我想要做的就是當鏈接被點擊時停止跳轉到div的頁面。

$('#jqNav li a').click(function(){ 

    if($(this).parent().is(".nav1")){ $('.landing .main .nav ul').css({ "background-position" : "0 -50px" });} 
    else if($(this).parent().is(".nav2")) { $('.landing .main .nav ul').css({ "background-position" : "0 -100px" });} 
    else if($(this).parent().is(".nav3")) { $('.landing .main .nav ul').css({ "background-position" : "0 -150px" });} 
    else if($(this).parent().is(".nav4")) { $('.landing .main .nav ul').css({ "background-position" : "0 -200px" });}; 


    stopAnim = true; 
    $page = $(this).attr('href'); 
    var $hashTag = $(this).attr('name'); 
    window.location = "#" + $hashTag; 
    loadData(); 
    e.preventdefault(); 
    return false; 

}); 
+0

@邁克爾·伊裏戈延我已經回到我的代碼這是回答你的假鏈接,它仍然通過問題,請注意e.preventdefault();剛剛添加。 – Xavier

回答

7

嘗試使用鏈路上e.preventDefault();點擊

嘗試使用$(window).scrollTop(0);防止#從影響頁面

+0

這正是我所需要的,謝謝尼爾! – Xavier

5

您可以使用e.preventDefault()

http://api.jquery.com/event.preventDefault/

或使用:

return false; 

這確實既preventDefault()stopPropagation()

http://api.jquery.com/event.stopPropagation/

編輯

不要以爲你想要什麼可以做的。因爲如果能夠更改頁面的URL而無需轉到該URL,那麼安全性會很差。

例如,您可以將URL更改爲允許用戶認爲您的頁面代表銀行的銀行的網址。

也許它工作時只需要添加一個哈希,所以你可以給下面的一個嘗試(沒有測試它,很可能會無法正常工作):

window.location.hash = $hashTag; 
return false; 

EDIT2

我知道,我只是告訴你,這是行不通的,但是我只是偶然在這裏所以這個帖子裏面使用HTML5做你想做什麼:

Is there a way to change the browser's address bar without refreshing the page?

同樣不測試:)

+0

我的代碼已經有了一個默認的返回值,但是它似乎跳轉了,否則看到OP代碼; – Xavier

+0

@OP:查看我編輯的答案 – PeeHaa

+0

謝謝這很有用,但我不會重建整個事情,所以尼爾答案證明是更適合我的需求。 – Xavier