2013-02-20 22 views
2

我有一個標準的鏈路設置可以在點擊防止標準的href/jquery點擊組合從追加#到網址?

<a href="#" class="dosomething">Click Me</a> 

所有被點擊的URL僞時,除了偉大工程,當通過jQuery觸發一個事件,它附加一個包括hashtag(#)的URL。這個hashtag影響我的頁面在用戶決定稍後刷新頁面時如何重新加載,所以我想不要將hashtag附加到url。

這是可能的,同時仍然允許我正常的jquery發射?

謝謝!

回答

-4

是否需要成爲一個href呢?你可以這樣做:

<span class="dosomething">Click me</span> 

.dosomething{cursor:pointer} 
+1

使用'SPAN'不會給他跨瀏覽器CSS懸停效果 – 2013-02-20 18:10:03

+0

什麼瀏覽器/懸停問題與跨度而不是a?這不是我以前遇到過的。 – Fraser 2013-02-21 08:42:56

1

在的你點擊功能,使用結束:

return false; 
4

您應該return false;A標籤的事件處理程序

或者,使用

<a href="javascript: void(0);" class="dosomething">Click Me</a> 

對於那些誰認爲javascript: void(0)是不好的做法

如果使用href='#',你必須照顧兩件事

// one 
function fn() { 
    // code 
    return false; 
} 

// two 
<a href="#" onclick="return fn();">click</a> 

如果你忘了,只是寫onclick="fn();"它不會工作

爲什麼我用javascript: void(0);另一件事是,如果函數遇到/拋出一個錯誤,它不會回報false

所以如果你是一個單獨的開發人員,那麼你可以明確地做出自己的選擇,但是如果你作爲一個團隊工作,你必須聲明:

使用href =「#」,確保onclick始終包含返回false;最後,任何調用的函數都不會拋出錯誤,並且如果您將函數動態添加到onclick屬性,請確保不會拋出錯誤,並返回false。

OR

使用href="javascript:void(0)"

Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?

+0

'javascript:void(0)'是不好的實踐。在hrefs上(並且大多數時間我認爲) – VeXii 2013-02-20 17:42:53

+0

@VeXii可能是更新後的答案,將解釋爲什麼我使用了'javascript:void(0)' – 2013-02-20 17:53:20

+0

@VeXii在這一點上絕對達成一致。但問題不在於改進代碼,所以我只給出瞭解決問題的答案。 – 2013-02-20 17:59:08

0

自作聰明anwser:使用一個按鈕。

替代:你必須確保觸發的preventDefault在您選擇jQuery的事件處理程序

$("dosomthing").click(function(e){ 
    //make magic happen 
    e.preventDefault() 
}) 

這適用於HTML表單提交,多數民衆贊成這樣和。按鈕的事情

值得注意的是只使用了鏈接標籤(財產以後,改變的URL)和按鈕等各種互動的最佳實踐。

搜索漫遊器和其他網絡爬蟲期望一個標籤鏈接到其他html文檔(超鏈接),直到幷包括html 4.或當前文檔中的其他點。