ユーザーのアクションによってスタイルなどを変更する場合に、JavaScriptを使ってClassの付け替えによってスタイルを変更する場合のソースコードになります。
JavaScriptでの実装
01 02 03 04 05 06 07 08 09 10 11 12 13 | let toggleBtn = document.querySelectorAll( '.btn' ); toggleBtn.forEach( element => { element.addEventListener( 'click' , event => { //クリック要素のclassの付け替え event.target.classList.toggle( 'is-shown' ); //兄弟要素のclassの付け替え e.target.nextElementSibling.classList.toggle( 'is-shown' ); }); }); |
ユーザが操作するよう要素に class="btn"
が設定されているとして、
1行目では対象の要素を取得します。
要素が複数ある場合は、document.querySelectorAll()
を使います。
要素が1つしかない場合は document.querySelector()
でも取得可能です。
3行目では、 forEach
を使って取得した全ての要素に対しての処理を記述します。
4行目では class="btn"
を持つ要素に、クリックイベントの動作を登録します。
7行目で「クリックした要素(class=”btn” を持つ要素)」自体のClassの付け替えを行います。.classList.toggle('付け替えたいClass名')
でクリックするごとに指定したClass名を付ける・外すを行います。
10行目では .nextElementSibling
を使って、クリックされた要素の次の兄弟要素を取得し
その要素に対してもClassの付け替えを行います。
jQueryでの実装
同じ挙動をjQueryで書く場合の例です。
1 2 3 4 5 6 | let toggleBtn = $( '.btn' ); toggleBtn.on( 'click' , event => { $(event.target).toggleClass( 'is-shown' ); $(event.target).next( '.answer' ).toggleClass( 'is-shown' ); }); |
1行目では対象の要素を取得します。
3行目は、取得した要素に対してイベントリスナーを登録します。
4行目では「クリックした要素(class=”btn” を持つ要素)」自体のClassの付け替えを行います。
5行目はクリックされた要素の次の兄弟要素を取得し、その要素に対してもClassの付け替えを行います。