2011-09-09 23 views
4

私は "データ"属性を使用し、IE7で私はそれの価値を得る方法を知らない。おそらくjQueryは私を助けますか?「データ」属性の取得方法は?

私はそれが動作しません。もちろん、この

window.event.srcElement.getAttribute('data-pk') 

を持っています。

編集:

for (i=0; i < max; i++) { 

    if (typeof attachEvent == 'undefined'){   
     //open[i].addEventListener('click', function(e){ openSlide(e.currentTarget.getAttribute('data-pk')), false}); 
     open[i].onclick = function(e){ openSlide(e.currentTarget.getAttribute('data-pk')), false}; 
    } else { 
     open[i].attachEvent('onclick', function(){ 
      openSlide(window.event.srcElement.getAttribute('data-pk'))}, false); 
    }; 
}; 

HTML

<div>        
    <img class='image' data-pk='18' src='/site_media/media/img/120x180.jpg'>        
    <img class='image' data-pk='13' src='/site_media/media/img/007b-300x224.jpg'>        
    <img class='image' data-pk='15' src='/site_media/media/img/IMG_0549_1.jpg'>        
</div> 
+0

と呼ばれていますか? –

+0

これは他のブラウザでも機能しますか? –

+0

@ DanielA.White、それはクリックで呼び出されます。私は私の質問を編集しました。 – I159

答えて

11

jQueryのを助けることができる...データ属性は、jQueryの中のデータ()関数で動作します。

$(srcElement).data('pk'); 

あなたが持っていた場合は、例えば、任意のデータ属性とそれを使用することができます。

$('#DivId').data('something'); 
$('#DivId').data('somethingElse'); 

がデータを設定するには:

<div id="DivId" data-something="foo" data-somethingElse="bar"> 

は、あなたがでからデータを取得することができます

$('#DivId').data('something', 'foo'); 
$('#DivId').data('somethingElse', 'bar'); 

ここにへのリンクです

EDIT:

私はあなたがしたいと思う:文字列が通過することを

$(srcElement).data('pk'); 

注:あなたはこのように、データのメソッドを使用することができますjQueryので

$('.image').click(function() { 
    openSlide($(this).data('pk'), false); 
}); 
+0

私はこのようにしました: 'open [i] .attachEvent( 'onclick'、function(){ \t \t \t \t openSlide($(this.srcElement).data( 'pk'))}、false);'そしてこれは未定義です。 HTMLはOKですが、データ-pkが存在します。私が間違ったことを得ることはできません。 – I159

+0

'$(this)を使用してください。データ( 'PK')私が探していたまさに ' – Martin

+0

@Martin、サンプルで1 – Luca

0

データを単に 'pk'にするだけで、属性の 'data-'部分を削除するだけです。

0

ゲッター(または他のライブラリ)attrゲッターを使用できます。または、jQuery sourceを調べて、ブラウザ間の一貫性をどのように達成したかを調べることができます。

1

トップの回答は古くなっています。例を<div id="DivId" data-somethingElse="bar"></div>とすると、データを取得するには$('#DivId').data('somethingelse')を実行する必要があります。より良い標準的な方法は、JavaScriptでキャメルケースをもたらすであろう、HTMLでヘビのケースを使用することです:

HTML:

<div id="foo" data-something-else="bar"></div> 

JS:でこれをどのようなイベントを

alert($('#foo').data('somethingElse')); // Alerts "bar" 
関連する問題