jQueryで後から追加した要素にhasClass / addClass / removeClassを使用した際の挙動
jQueryで後から追加した要素にhasClass / addClass / removeClassを使用したいというケースがあった。イベントを割り当てたい場合「$(document).on('click', 'セレクタ' , function() {」のような形で記述することになるが、この辺りがどうなるのかメモ。
ソースコード
hasClass
普通に動作する。描写前だと当然falseになる。
<div id="test_area"></div> <script type="text/javascript" src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <script> $(function(){ console.log($(`#test_btn`).hasClass(`btn`)); //false(描写前のため) $(`#test_area`).html(`<button id="test_btn" class="btn">button</button>`); console.log($(`#test_btn`).hasClass(`btn`)); //true }); </script>
addClass
これも普通に動作する。
<div id="test_area"></div> <script type="text/javascript" src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <script> $(function(){ $(`#test_area`).html(`<button id="test_btn" class="btn">button</button>`); $(`#test_btn`).addClass(`btn2`); //<button id="test_btn" class="btn btn2">button</button>に書き換わる }); </script>
removeClass
これも普通に動作する。
<div id="test_area"></div> <script type="text/javascript" src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <script> $(function(){ $(`#test_area`).html(`<button id="test_btn" class="btn">button</button>`); $(`#test_btn`).removeClass(`btn`); //<button id="test_btn" class="">button</button>に書き換わる }); </script>
所感
試してみる前の時点ではイベントを割り当てる場合のようにちょっと面倒くさい書き方をしないといけないのかと思ったが普通の書き方で良いみたい。
関連記事
-
-
jQueryでループを抜けようと(breakしようと)するとエラーになる際の対応方法
jQueryでループを抜けようと(breakしようと)すると「Uncaught ...
-
-
jQueryプラグインのDateTimePickerで年月日と時間のピッカーを実装する方法
jQueryで年月日と時間を選択できるピッカーを導入したかった。以前にboots ...
-
-
jQueryで偶数or奇数行に任意のClassを付与する方法
tableタグの1行目を除く偶数もしくは奇数行のtrタグに任意にClassを指定 ...
-
-
Lightboxで画像拡大時に閉じるボタンの位置を右上に変更
Lightbox(バージョン2.7.1)で画像拡大時に閉じるボタンの位置を右下か ...
-
-
jQueryにて何らかの処理中にブラウザをロックする「waitMe」プラグインの利用方法
jQueryにて何らかの処理中、ユーザーによるクリックや入力等の動作を防ぎたい。 ...