2010-11-06 53 views
0

如何選擇使用jQuery的onclick函數內錨標籤的ID?jQuery選擇

<a id="123" href="#" onclick="javascript: showDialog(select id of this anchor)"> Click it </a> 

在此先感謝。

回答

1

使用this關鍵字:

<a id="123" href="#" onclick="javascript:showDialog(this.id);">Click it</a> 
6

showDialog(this.id)但最好要做到這一點不顯眼,而不是具有內嵌的事件處理程序。

編輯:ID不能以數字開頭的DDorward說。必須是一封開始的信。

6

簡短的回答是:

onclick="showDialog(jQuery(this).attr('id'));" 

較長的答案是:

  1. 不必由只是數字的編號。 * ID和名稱標記必須以字母([A-Za-z])開頭,後面可以跟隨任意數量的字母,數字([0-9]),連字符(「 - 」),下劃線(「_」 ),冒號(「:」)和句點(「。」)。* - http://www.w3.org/TR/html4/types.html#type-name
  2. 請勿label如果您不需要,請不要混淆標籤與declaring that an onclick attribute contains JavaScript(而不是其他語言)
  3. 不要使用jQuery的時候一個簡單的屬性會做(this.id更短,速度比jQuery(this).attr('id')
  4. 不要從一個元素的ID傳遞給一個函數,然後獲取使用該ID的元素(如showDialog大概是這樣)直接傳遞元素:showDialog(this)(你可能需要修改showDialog)。
  5. 請勿使用固有事件屬性。 Unobtrusive JS是前進的道路。
  6. 取消您的活動。就目前而言,JS將運行,然後瀏覽器將按照鏈接...到頁面的頂部。
  7. 當一個鏈接建設,在一些識相點href屬性。如果JS不可用,那麼用戶可能不希望鏈接將它們發送到頁面的頂部。 Build on things that work
3

在事件處理程序this指元素,所以this.id爲您提供了元素的ID。

通常你會用代碼添加事件處理程序,而不是有一個內嵌處理器。您還需要阻止鏈接的默認操作,該鏈接將轉至href屬性的地址。在這種情況下,它會跳轉到書籤#,這會導致頁面滾動到頂部。

$(function(){ 
    $('#123').click(function(e){ 
    showDialog(this.id); 
    e.preventDefault(); 
    }); 
});