2011-09-23 95 views
3

假設我有一個觸發一些javascript的標籤。例如:什麼是觸發javascript的鏈接的最佳做法

HTML:

<a href="#" id="some_id">Trigger action!</a> 
<!-- or, with appripriate CSS : --> 
<span id="some_other_id">Trigger action!</span> 

的jQuery:

$("#some_id").click(function() { 
    alert("some action") 
}); 

我最好如何做到這一點?

我的問題是當我懸停在鏈接上時,我應該在瀏覽器的左下角看到什麼?即什麼是href值應該是

如果響應是'無',那麼正確的方法是跨度。

的一些方法,例如:http://jsfiddle.net/M3qkU/5/

回答

3

這取決於你正在做一個網頁還是一個Web應用程序。

如果您正在製作網頁,請嘗試讓鏈接對尚未啓用JavaScript的用戶有用。這樣,JavaScript是增強頁面,而不是它所需的工作。這被稱爲progressive enhancement。例如:假設你有一個頁面,你希望它有標籤。按順序將這些製表符放入元素中,併爲每個製表符的元素賦予一個id值。將您帶到這些選項卡的導航鏈接的片段中將包含id值(例如,#movies將帶您到達movies元素  —瀏覽器爲您完成此操作)。然後,當您的JavaScript加載時,讓它將這些元素變成標籤並接管這些鏈接的操作。

如果您正在執行一個Web應用程序,並且該鏈接在UI中觸發了「頁面更改」或「選項卡更改」類別的更改,請將其保留爲鏈接並將href作爲片段(例如,#movies)它描述了應用程序在發生時切換到的「頁面」或「選項卡」。您甚至可以在處理鏈接時使用該信息,並且可以在最初加載頁面時使用它,以便您的各種頁面狀態可以鏈接。如果「鏈接」不會在應用程序中導致位置樣式更改,則大多數情況下會使其成爲按鈕(您可以將button元素設置爲非常重要的程度,但我不會讓它們看起來像鏈接) 。

0

有大量的理論這個的。 Mine:

  • an a標記只能在鏈接到內容時使用。在這種情況下,應該有一個有效的href。在鏈接的內容將被加載在頁面上(模態,ajax等)的情況下,JS會覆蓋href並完成它的工作。

  • 頁面級交互(按鈕,可點擊圖標等)不應該是鏈接,因爲沒有JavaScript,它們沒有任何用處。在這種情況下,他們應該使用與a不同的標籤。

當然,我總是自己破壞這些規則。

從技術上講,href="#"將使頁面在大多數瀏覽器中滾動到頂部。如果你使用這個,那麼你必須小心,總是重載JS中的href ...這很容易忘記。因此,對於純JavaScript交互a標籤,我建議使用href="javascript:;"

2

兩種情況:

  • ,如果你有一個後備與JavaScript後的作品(如登錄表單,在覆蓋打開也可以打開爲常規頁面),然後使用指向該頁面的<a>鏈接,並觸發overlay/javascript操作。

  • ,如果它是沒有回退的元素,不使用<a>(如一些觸發行內編輯器)

但是,不管你做什麼,不要使用<a href="javascript:soemthing()">因爲用戶將該鏈接視爲鏈接的「網址」,並且可能會造成混淆。


至於<a href="#">,我不建議這樣做是(即使它的廣泛使用),因爲像前面mentionned,它並不指向一個真正的位置。

在這種情況下使用<a>的唯一的好處是,你得到一個手形光標,但可以使用cursor:pointer在CSS中有光標在您的非<a>元素。

+1

by fallback he means '...'和'YourBrowserDoesNotSupportJavascript.html' ***親切地告訴用戶他們正在使用一個需要一個耳光的古老的瀏覽器。 – rlemon

+1

如果頁面不能在沒有javascript的情況下不能運行,我會使用帶粗體紅色文字的

+0

'

相關問題