2011-09-14 251 views
3

我需要訪問我的鏈接的自定義屬性或數據,但我不能。我的代碼很簡單,但在中繼器。我不知道這是否會造成問題。下面是代碼:通過jquery訪問自定義屬性

<a class="showAllComm" data-userid='<%# DataBinder.Eval(Container.DataItem, "USER_ID")%>' href="#sa">Show all comments</a> 

這裏是我的單擊事件:

$('.showAllComm').click(function(index, element) { 
      var commId = $(element).data("userid"); 
}) 

commId是不確定的,但我可以看到它,它有1

怎麼能值的源代碼我訪問userId?

謝謝

回答

8

參考與this,而不是第二個參數的元素:

var commId = $(this).data("userid"); 

傳遞給事件處理函數的參數是不是indexelement因爲你必須在.each()

默認情況下,您只傳遞一個參數event

DEMO:http://jsfiddle.net/Jjbwd/

$('.showAllComm').click(function(event) { 

    alert(event.type) // click 

    var commId = $(this).data("userid"); 
}); 
+0

謝謝你,但我不知道..什麼是不能夠與元素訪問的原因是什麼? – Pabuc

+1

@Pabuc因爲在回調中沒有第二個參數,唯一的參數是一個jQuery事件對象。 – Alnitak

+0

在這些情況下,不需要創建jQuery對象,更簡單的'.data(this,「userid」)'會更有效率......因爲它只是執行'this [$。expando]'調用,而不是比完整的jQuery()調用/ init。 –

1

data方法不是爲attr方法的快捷方式。它需要的元素和屬性,per the docs

只需使用attr("data-userid")

+0

有*另一個*'.data()'方法他使用:http://api.jquery.com/data/ –

+0

嗯,會是的。也許如果我一直在使用這個,我就不會懶惰地在我的所有數據屬性上使用'data'前綴。 – RSG