0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScript ⇆ jQueryの書き換え 要素の取得編

Last updated at Posted at 2024-09-08

はじめに

検索したら腐るほど記事が出てくると思いますが、jQueryをJavaScript(以下js)へ書き換える案件に新人と入る為、簡単にまとめ。

内容は基本的にMDNと

JavaScript本格入門

の二つを参考に作成していますが、記事書いている本人もjsが得意な訳ではないので間違いがあるかもしれませんが、その際はご指摘いただけますと幸いです。

DOMとは

Document Object Modelの略
ブラウザに表示されているHTML等をオブジェクトとノードとして表現することで、jsで操作することが出来るようにするAPI。

要素の取得

HTMLの要素を取得するには主に以下のような方法がある

  • document.getElementBy~("hoge")
  • document.querySelector("#hoge")
  • document.querySelectorAll(".fuga")
  • $(".fuga")

上3つがjsで要素を取得する際に利用される記法
最後の一つがjQueryの記法

例 次のhtmlからpタグを取得する

<body>
    <div>
        <p class="fuga" id="hoge1">id_hoge1</p>
        <p class="fuga" id="hoge2">id_hoge2</p>
    </div>
</body>
// 指定した値に一致するidを持つ要素だけを取得  
const p_hoge_gemb1 = document.getElementById('hoge1');  // 取得したい要素のidを入力
const p_hoge_qs1   = document.querySlector('#hoge1');  // セレクターの指定はCSSと同じ
const p_hoge_jq1   = $("#hoge1")                       // 〃

// 指定した値に一致するclassを持つ要素を取得  
const p_fuga_gemb1 = document.getElementsByClassName('fuga'); // 取得したい要素のclassを入力
const p_fuga_qs1   = document.querySlectorAll('.fuga');     // セレクターの指定はCSSと同じ
const p_fuga_jq1   = $(".fuga")                             // 〃

// classを指定するのは同じだが挙動が違う
const p_fuga_qs2   = document.querySlector('.fuga');    // 指定したclassを持つ最初の要素だけ取

document.getElementBy~は取得したい要素によって~の部分が以下のように変わる

指定したい対象 記述
idを指定する場合 Id
タグを直接指定する場合 TagName
classを指定する場合 ClassName

それぞれの使い道

今回のようにquerySelectotとgetElementBy~であれば前者の方が使い勝手良さそうではあるものの、それぞれ特徴がある。

まず一番わかりやすい特徴として、取得される要素の形式(返り値)が違う

記述 取得される要素の形式
getElementById or querySelector element
getElementsBy~ HTMLCollection
querySelectorAll NodeList

それぞれ簡単に説明すると

element

指定したセレクターに一致したHTML要素。
指定した要素が存在しない場合はnullが返る。

HTMLCollection

指定したセレクターに一致した要素が集合した、【配列風】なオブジェクト。
HTMLCollectionは【生きた要素】で、元になった要素へ変更があった場合、自動で変更が入る。
配列として利用するにはArray.fromなどを使用する必要がある。

NodeList

ノード(node)の集合。
配列ではないが、forEachメソッドで反復処理を実行することは可能。
querySelectorで取得した場合は静的な要素になるが、Node.ChildNodesなどで取得すると生きた要素になる

  • node
    • DOMの基本的な構成要素 jsでHTMLをプログラムで操作する基本単位
    • elementはnodeの一種で基本的に要素(タグ)を表す

jQuery・JavaScriptそれぞれの書き換えに関するイメージ

扱う要素の数やその後の処理によって変わりますが、個人的にはjQueryからJavaScriptに書き換えるとき、苦にせず入りやすいのはquerySelectorな気がする。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?