脱jQuery メモ

2022/04/29

複数のクラス指定で要素を取得

const elms = document.querySelectorAll('.hoge, .fuga');

.querySelectorAll('selectorNames') でOK。

on

.addEventListener('eventName', function)

複数の要素に対するイベントハンドラ

elms.forEach(elm => {
    elm.addEventListener('click', process);
},
false);

親要素・祖先要素

.closet('.parent')

子要素

jQuery の .children('selectorName') は一応プレーンな JavaScript にも .childrenプロパティ があるものの、そこでセレクタ指定はできなさそう。

クラス名全てを取得

jQuery では .prop('class') としていたところですが、 .className でOK。

子孫要素の中から探す

jQueryでは .find() だったところを、 elm.querySelector('selectorName') と指定すればOK。

jQuery で $(window).outerWidth() としてたところを、今回の用途では window.innerWidth へ。

クラスの存在チェック

jQuery では .hasClass('className') だったところを、 .classList.contains('className') へ。

イベントハンドラの指定とイベント発火要素の取得

普通に関数指定で elm.addEventListener('click', hoge(elm), false) と書いてしまったが、これだとその関数の実行結果が渡されるとのこと。しかもイベント発火時ではなく該当コード読み込み時に実行されてしまう。

第二引数はオブジェクト (または JavaScript の純粋な関数) なので elm.addEventListener('click', hoge, false) と関数名だけにしなければならない。

が、 const hoge = (e) => { /* 処理 */ }; で普通にイベントは渡ってくるので e.currentTarget とすればクリックした要素が取得できるので大体問題ない。

イベント発火

elm.dispatchEvent(new Event('click'))

その他

Bootstrap 5 のブレークポイント


Written by Circle
A mound built by the accumulation of hyperlinks are like Kowloon.