2011-02-08 8 views
1

私はjQueryをつかんでいるq列のリンクを含むgridview(gdvMyInfo)を持っています。jQueryデリゲートでhasClass()を使用しますか?

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

これはうまくいきましたが、今度はリンクを含む2番目の列があり、ページングをオンにする必要があります。これで、これらの新しいリンクに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

+0

@zk:ようこそ。 – user113716

+0

@zk + hasClass()は 'true'または 'false'を返します.jqueryオブジェクトを返すメソッドと同じようにチェーンすることはできません。 – tsiokos