この記事では、JavaScriptとjQueryでdata属性の値を取得する方法を解説します。
data属性とは
data属性
は、HTML5から使えるようになったカスタムデータ属性です。
HTML要素に「開発者が自由に定義したデータ」を埋め込むために使います。
書き方はとてもシンプルで、data-
から始まる属性名をHTMLタグに追加するだけです。
例:
<div id="target" data-user-id="1" data-role="admin">ユーザー情報</div>
上記の例では、<div>
タグに「user-id」と「role」という2つのデータが含まれています。
data属性を使う理由
- 要素ごとに異なるデータを持たせたいときに便利
- クラス名やIDでは管理しづらい細かい情報を埋め込める
- JavaScriptやjQueryから簡単にアクセス・操作できる
たとえば、ECサイトで「商品ID」や「価格」などを各ボタンに持たせたい場合などに非常によく使われます。
例:
<button id="add-cart" data-product-id="1001" data-price="1980">カートに追加</button>
このようにdata属性は、HTMLとJavaScriptの「橋渡し」のような役割を果たしてくれます。
JavaScriptでdata属性の値を取得する方法
JavaScriptでdata属性の値を取得するには、dataset
プロパティを使うのがもっとも一般的で簡単な方法です。
以下のようなHTMLがあったとします。
HTML:
<div id="target" data-user-id="1" data-role="admin">ユーザー情報</div>
この要素に対して、JavaScriptでdata属性の値を取得するには次のように書きます。
const element = document.querySelector('#target');
const userId = element.dataset.userId;
const role = element.dataset.role;
console.log(userId); // "1"
console.log(role); // "admin"
data-
の後ろは キャメルケース(userId, roleなど) に変換して使います。data-user-id
→dataset.userId
になることに注意しましょう。
イベントと組み合わせてdata属性の値を取得する方法
実際の開発では、ユーザーがボタンをクリックしたタイミングでdata属性の値を取得したいケースが非常に多いです。
たとえば、以下のように商品IDをボタンに埋め込んでおき、クリック時にそのIDを取得して処理を行うような場面です。
HTML:
<button data-product-id="1001">商品A</button> <button data-product-id="1002">商品B</button> <button data-product-id="1003">商品C</button>
const buttons = document.querySelectorAll('button');
buttons.forEach(button => {
button.addEventListener('click', function() {
const productId = this.dataset.productId;
console.log(`クリックされた商品ID: ${productId}`);
});
});
jQueryでデータ属性を取得する方法
jQueryでdata属性の値を取得するには、.data()
メソッドを使用します。
以下のようなHTMLがあったとします。
HTML:
<div id="target" data-user-id="1">ユーザー情報</div>
この要素に対して、jQueryでdata属性の値を取得するには次のように書きます。
const userId = $('#target').data('userId');
console.log(userId); // 1
新しいバージョンのjQueryではキャメルケース(
.data('userId')
)で指定することが推奨されますが、(.data('user-id')
のように、ハイフン区切りのまま指定することも可能です。古いバージョンのjQueryを使用している場合、キャメルケースで指定することはできないため、ハイフン区切りで指定する必要があります。
udemyでJavaScriptを学ぶ
- 本格的なWEBサイトを作成する方法について学びます。
- Sass(※以下CSSと記載)、JavaScriptの基礎について深く学びます。
- CSS、JavaScriptの実践的な記述について深く学びます。
- CSS、JavaScriptアニメーションの実装について学びます。
- 最新の実践的なWEB画面の作成方法について深く学びます。
- CSS、JavaScriptのコードの最適化、安定化について学びます。
- 維持管理、持続可能なコードの記述方法について学びます。
- ドットインストールでCSS、JavaScriptの入門編を終えたレベルの方
- 他の先生のフロントエンドの入門編を終えたレベルの方
- 自分で本格的なWEBサイトを作ってみたい方
- CSS、JavaScriptの実践的な基礎を効率的に学びたい方
- CSS、JavaScriptを今後仕事で使う予定の方
- CSS、JavaScriptのコードの整理方法について学びたい方
- CSS、JavaScriptのアニメーションを学びたい方
- CSS、JavaScriptのレベルアップしたいWeb開発初級者の方
- CSS、JavaScriptでどのようにすればレベルアップできるのか悩んでいる方
- JavaScriptの動作原理について深く学びます。
- JavaScriptがどのように実行されるのかについて深く学びます。
- ES6+の最新のJavaScriptの記法について幅広く学びます。
- 変数や参照の仕組みについて深く学びます。
- オブジェクトのメカニズムについて深く学びます。
- 関数のメカニズムについて深く学びます。
- スコープの仕組みについて深く学びます。
- プロトタイプのメカニズムについて深く学びます。
- 反復処理のメカニズムについて深く学びます。
- ジェネレーターやイテレーターについて深く学びます。
- コールバック関数について深く学びます。
- 非同期処理のメカニズムについて深く学びます。
- モジュールの仕組みについて深く学びます。
- クロージャーの仕組みについて深く学びます。
- レキシカルスコープの仕組みについて深く学びます。
- アロー関数の特徴について深く学びます。
- レキシカルスコープの仕組みについて深く学びます。
- アロー関数の特徴について深く学びます。
- thisの仕組みについて深く学びます。
- bind、apply、callの動作原理について深く学びます。
- クラスと継承の仕組みについて深く学びます。
- ReflectやProxyなどの強力なオブジェクトへの理解を深めます。
- Map,Setなどの強力なコレクションについて実践を交えて学びます。
- よく使用される強力な実装パターンを演習を交えて学びます。
- 独自のフレームワークを構築していく中でJavaScriptのメカニズムについて理解を深めます。
- JavaScriptをコアの動作原理からキチンと理解したい方。
- 自分の思った通りコードが動かずに悩んでいる方。
- 自分の思った通りに動かず、気付いたら解決するのに1日経ってしまっていた経験のある方。
- React, Vue, Angularが使いこなせず悩んでいる方。
- JavaScriptの不可解な動きが理解できず、苦しんでいる方。
- 少し複雑なコードを書こうとすると、ぐちゃぐちゃになって整理しきれず、悩んでいる方。
- JavaScriptを本気で勉強したいと思っている方。
- JavaScriptの変態仕様に苦しんでいる方。
- JavaScriptが苦手なプログラマーの方。