2011-04-02 158 views
2

我在頁面上有幾個鏈接,並且當用戶點擊它時想運行一個JQuery腳本。以前,我在鏈接中添加了一個唯一的ID,例如如何檢查點擊鏈接的類

<a id="user_1" class="mylink"> 

在我的單擊事件我那麼提取的ID,並在它開始的處理

userid = $(this).attr('id').split('_')[1]; 

現在我有我的頁面可能具有相同的id幾個環節的問題,當然這是不可能(afaik)。所以我想我必須將它添加爲類,對嗎?例如

<a class="mylink user_1"> 

這是最好的方法嗎?然後,我怎麼才能從類中提取用戶ID('1')? jQuery腳本當然也應該注意,有一些沒有class'user _ ,,,'的鏈接。 非常感謝提前!

回答

5

這樣做最好的方法是自定義data-*屬性。這些標準符合HTML5標準,並在比該標準更早的瀏覽器中普遍使用。

那麼你的鏈接可能是這樣的:那麼

<a data-user="1" class="mylink"> 

你點擊的處理器也可以是這樣的:

$('a').click(function(){ 
    var userId = $(this).data('user'); 
}); 

這工作,因爲data進口data-*屬性。

如果沒有data-user屬性集,則userId將爲undefined

+0

Brillant!我已閱讀了jQuery 1.4.3中實現的這個新功能,但我認爲它僅限於HTML5。非常感謝!! – K232 2011-04-03 04:27:32

1

this.className,或者如果你想使用jQuery對象做到這一點(有沒有很好的理由這樣做):$(this).attr('className')

從這個字符串,你可以用正則表達式(/userid_([0-9]+)/)...

提取ID

但是,使用HTML5 data-屬性會更好。由於瀏覽器是很沉得住氣未知屬性他們不破壞任何東西,並會正常工作與HTML4和XHTML:

<a class="mylink" data-userid="1">---</a> 
... 
var userid = $(this).data('userid'); 

的好處是:如果你把有效的JSON的數據屬性,.data('yourAttr')會自動返回一個對象而不是一個字符串。

+0

做工精良,非常感謝! – K232 2011-04-03 04:28:22

0
+0

這實際上是我有的代碼,但不是解決方案....?甚至更讓人退步,因爲這不會從名稱中提取ID ... – K232 2011-04-03 04:30:27