2012-04-23 44 views
2

我只是想要跳過瀏覽器在用鏈接代碼單擊鏈接元素(A)時更改位置的行爲的首選方式。單擊鏈接時跳過更改位置

<a href="javascript:void(0)">void(0)</a> // I have always used this one 

或者

<a href="javascript:;">:;</a> // This one is simple and now a days my favourite 

或者

<a href="#">#</a> // Scroll to the top 

或者你怎麼做,爲什麼?什麼是最好的實踐?

回答

0

我更喜歡使用onclick而不是href JavaScript標記。但是,如果你必須,返回false。它會停止瀏覽器的默認操作(更改URL)。我也沒有意識到與這兩個第一。避免第三個,它可以導致頁面滾動很長的頁面,並污染導航歷史。

<a href="javascript:dostuff(); return false;">Do nothing</a> 
0

這取決於您想跳過默認行爲的原因。使用上面顯示的方法,鏈接不是很有用,因爲它們的href屬性不包含任何信息。它們只是佔位符......你可以參考一個不存在的ID,<a href="#phlogiston">dummy link</a>,它在點擊時不會執行任何操作。

如果你想要一個鏈接有一個正常的href屬性,但點擊時做別的事情,你不會內聯。相反,只要鏈接觸發點擊事件,就會使用頁面加載的腳本調用event.preventDefault()方法。也看到這個答案:event.preventDefault() vs. return false

+0

那不是真實的,空白的HREF將actully重新加載頁面的點擊時。對於Chrome – 2012-04-23 18:49:23

+0

正確,謝謝西蒙,你是對的! – 2012-04-23 18:54:16

0

就個人而言,我更喜歡將「注入」操作而不是混合js和html。您不必以這種方式掃描HTML的JavaScript行爲。

一個簡單的例子使用jQuery:http://jsfiddle.net/5nbXT/

+0

我不知道,但我認爲這會給客戶端帶來額外的開銷,它必須爲選擇器中的所有元素進行搜索並對事件處理程序進行分析。 – 2012-04-23 19:08:48

+0

@SimonEdström當然,如果你是純粹主義者,這種技術可能會在加載時增加幾納秒的處理時間......但是說實話,現在的DOM橫越速度非常快,這與內聯版本幾乎沒有區別。 – 2012-04-23 19:31:35