2013-08-07 17 views
50

対のデータ属性のjQueryを取得します。)私は、デフォルトで設定されたカスタムデータ属性を持っているjavascriptの

data-equipment="0"

私は.dataのを(使用してjQueryを使ってこれを変更した場合

$(this).data("equipment", 10)

を入力し、getAttribute()を使用します。

this.getAttribute("data-equipment")

私は古い値(0)を取得し、新しい値(10)は取得しません。しかし、私が使用する場合

$(this).data("equipment")私は新しい値(10)を取得します。

これはこのように動作するはずですか、何か不足していますか?

ありがとうございます!

+1

'.data()'は本当にデータ属性をサポートしていません。属性から値を取得するだけで、独自のデータストレージを使用して属性を更新することなく保持します。私は個人的にjQueryの '.data()'をこれに使用しません。 –

+0

data-属性はelement.datasetを使用してアクセスできますが、jQueryではこれを使用しません。 – Virus721

答えて

45

.data()は、データ属性ではなく内部jQueryキャッシュで動作します。最初にキャッシュレコードが見つからない場合、データは対応するdata-属性から読み取られます(存在する場合)が、その協力の終了です。

属性で操作した場合、属性値は文字列でなければならないため、目的には役に立たなくなります。

+1

これは '$(this).data(" equipment ")と' $(this).attr( "data-equipment")の主な違いだと思います。あなたが '$(this).data(" equipment ")'でいくつかのデータ属性を取り出し、 '$(this)).attr(" data-equipment "、" some value ")で属性値を変更すると、 jQueryのキャッシュ機構のために '$(this).data(" equipment ")で新しい値を追加しました。 – beawolf

関連する問題