5

私のプロジェクトでは、現在、HTMLでいくつかのカスタムデータ*属性を使用して、jQueryで使用される追加のデータを伝達しています。メソッドを見つけ.data()て、data- *属性がある場合、data-my-attributeその属性を持つ要素を選択してを呼び出すことで、jQueryでその値を取得できることに気付きました.data("my-attribute")

私はこれが使用されるはずの方法であると想定し(ドキュメントを調べていませんでした)、jQueryコード全体で使用しました。ただし、たとえば"000005643"HTML data- *属性に文字列を入力すると、.data("my-attribute")return5643.attr("data-my-attribute")returnになることに気付きました"000005643"。後者は私が欲しかったものです。.data()これにより、ドキュメントを調べて、思った以上のことが実際にあることがわかりました。.data()また、 data-*属性の値を取得するために使用する必要があることを示すテキストや例を見たことがありません。これは私が根本的に間違ったことをしているのではないかと心配しています。

それで、私はこの方法での使用をやめ、やめるべき.data()でしょうか?そうでない場合は、.data()この使用法を説明する関数に関するいくつかのドキュメントにリンクしていただけませんか。

4

2 に答える 2

8

data()HTML5data-*属性を返すメソッドは、1.4.3で導入されました

jQuery 1.4.3以降、HTML5データ属性はjQueryのデータオブジェクトに自動的に取り込まれます。

文字列をJavaScript値(ブール値、数値、オブジェクト、配列、およびnullを含む)に変換しようとするたびに試行されます。それ以外の場合は、文字列のままになります。変換を試みずに値の属性を文字列として取得するには、attr()メソッドを使用します。

ソース

jQueryは確実に数値が必要なようです。Numberそのため、ではなく、を返しますString

文字列として使用する場合は、を使用しますattr()

于 2011-05-03T06:20:14.850 に答える
1

私は実際にこの機能をZeptoに移植することに取り組んでいます。ええ、それはデータHTML仕様に実際には問題はありませんが、それはjQueryによる実装にすぎません。これは、data-が非文字列をうまく処理しないという事実を回避しようとしています。次に、null、int、floatなどの値を空想的に引き出します。回避策は、値の前に文字列文字を置き、それを取得するときに文字列を削除することだと思います。それかattr('data-')を使用します-.dataと.attrの間を行ったり来たりすると、お気づきのように異なる結果になる可能性があります。どちらか一方に固執します。

于 2011-05-03T06:36:50.490 に答える