javascript
  • jquery
  • attributes
  • 2011-09-14 55 views 3 likes 
    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にアクセスできますか?

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

    あなたが持っているだろうとしてイベントハンドラに渡される引数はindexelementではありません。

    答えて

    8

    リファレンスの代わりに二番目のパラメータのthisを持つ要素をありがとう.each()

    デフォルトでは、単一のevent引数が渡されます。

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

    $('.showAllComm').click(function(event) { 
    
        alert(event.type) // click 
    
        var commId = $(this).data("userid"); 
    }); 
    
    +0

    ありがとうしかし、私は要素にアクセスすることができない理由..ですか疑問を使用per the docs

    、要素や属性を取りますか? – Pabuc

    +1

    @Pabucコールバックに第2パラメータがないため、唯一のパラメータはjQueryイベントオブジェクトです。 – Alnitak

    +0

    このような場合、jQueryオブジェクトを作成する必要はありません。より単純な '$ .data(this、" userid ")'はより効率的です...むしろ 'this [$。expando]'コール完全なjQuery()呼び出し/ initよりも優れています。 –

    1

    data方法はattr方法のショートカットではありません。それはちょうどattr("data-userid")

    +0

    彼が使っている別の* '.data()'メソッドがある:http://api.jquery.com/data/ –

    +0

    まあ、そうです。多分私がこれを使っていたのであれば、私のすべてのデータ属性に 'data'プレフィックスを使用することに怠惰を感じることはありませんでした。 – RSG

    関連する問題