[JavaScript General] クリックされたリストの子要素のカスタムデータ属性を取得する
ID を付与した ul リストの子要素のクリックを検知し、data-* attributes を取得する。
[markdown]
“`html
“`
“`javascript
‘use strict’
const list = document.getElementById(‘show’);
list.addEventListener(‘click’, show, false);
function show(event) {
let target = event.target;
alert(target.getAttribute(‘data-isbn’));
event.preventDefault();
}
“`
`list` を `addEventListener` で監視する。
> [EventTarget.addEventListener – Web API インターフェイス | MDN](https://developer.mozilla.org/ja/docs/Web/API/EventTarget/addEventListener)
`event.target` でクリックされた要素を検知する。
> [Event.target – Web API インターフェイス | MDN](https://developer.mozilla.org/ja/docs/Web/API/Event/target)
カスタムデータ属性を `getAttribute` で取得する。
> [element.getAttribute – Web API インターフェイス | MDN](https://developer.mozilla.org/ja/docs/Web/API/Element/getAttribute)
`dataset` は、IE11+ から利用できる。
“`javascript
alert(target.dataset.isbn);
“`
> [HTMLElement.dataset – Web APIs | MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset)
`event.preventDefault` でリンクのディフォルト動作(遷移)を停止する。
> [event.preventDefault – Web API インターフェイス | MDN](https://developer.mozilla.org/ja/docs/Web/API/event/preventDefault)
See the Pen JavaScript get custom data attributes of child elements by DriftwoodJP (@DriftwoodJP) on CodePen.
## 補遺
> * [イベントハンドラ と イベントリスナ | deadwood](https://www.d-wood.com/blog/2016/08/09_8388.html)
> * [HTML5 カスタムデータ属性「data-*」にJavaScript、jQueryからアクセスする方法 – ROCHAS](http://dresscording.com/blog/html5/custom_data_attribute.html)
[/markdown]