2011-02-08 91 views
1

我有一個gridview(gdvMyInfo),它包含我用jQuery抓取的q列鏈接。使用hasClass()和jQuery委託?

$('#<%= gdvMyInfo.ClientID %>').delegate('a', 'click', function(){ 
    var link = $(this).attr('href'); 
    .... 
    return false; 
});   

這很好,但現在會有第二列包含鏈接,我需要打開分頁。這現在將我的jQuery更改附加到這些新鏈接。

我在我需要的鏈接上有一個「myInfoClass」類,但使用該類作爲選擇器似乎不適用於我(不確定它是否爲委託,因爲它沒有選擇正常)。

$('.myInfoClass').delegate('a', 'click', function(){ 

這不起作用,所以我想我可以使用.hasClass()函數,但那也失敗了。

$('#<%= gdvMyInfo.ClientID %>').hasClass('myInfoClass').delegate('a', 'click', function(){ 

這失敗的錯誤消息「.delegate是不是一個函數」

因此,任何想法如何,我可以用鏈委託搶在我gridvie任何<a>‘gdvMyIfno’與選擇使用委託時有一類「myInfoClass」?

回答

2

只需將該類添加到選擇:

$('#<%= gdvMyInfo.ClientID %>').delegate('a.myInfoClass', 'click', function(){ 

現在click將僅針對具有類myInfoClass<a>元素。

工作方式.delegate()的工作原理是它在容器#<%= gdvMyInfo.ClientID %>上放置了一個處理程序。然後點擊該容器內的元素與a.myInfoClass選擇器進行比較。如果元素匹配選擇器,則調用該處理程序。

+0

謝謝。這是我第一次使用委託,所以我仍然在學習它是如何工作的。這很棒。 – InsertOldUserIDHere 2011-02-08 15:33:32