部下からもらった質問の中であいまいな回答しかできなかったことを後で調べて共有したものをメモとして。
要素の存在確認について
Q :「jquery 要素 存在確認」で検索すると.length
で確認する方法と.size()
で確認する方法がヒットしたけどどっち使えばいいのか?
個人的にずっと.length
使ってたんだけど部下に.length
と.size()
の違いをハッキリ説明できなかったので
「jquery length size() 違い」とかで検索してたらそもそもバージョン3.0以降では廃止になったらしいのでどっちがどっちとかではなかった。
一応廃止の情報を見つけるまでに.size()
は非推奨となっていて、その理由が.size()
のメソッド内で.length
呼んでるから単純に数数えるなら.length
でよくない?とのこと。
.lengt
hを使ったif文の書き方
Q : なぜif文の条件がnum.length
じゃだめなのか。
if (num.length) {
// 処理
}
と書いていたので
if (num.length > 0) {
// 処理
}
に直してーって伝えようと思ったけど、そもそもなぜnum.length
じゃいけないのか説明しないとと思い、
自分の中にふわーっと認識していたものを改めて整理。
・if文の条件で変数だけ指定する場合は返り値がboolean
のもの。
・.length
の返り値はboolean
ではなく数値。
よってif文の条件をnum.length
じゃなくてnum.length > 0
で書いてほしい。
変数の定義
const $hoge = $('.hoge');
Q : この変数の先頭の$(ドルマーク)はなんのため?
Jqueryのオブジェクトだよーっていう印。
一目でjqueryの処理が加わるオブジェクトとわかるように。
メソッドの記述について
<div class="content-wrap">
<div class="content"></div>
<div class="content"></div>
</div>
const $content = $('.content');
$content[0].text('hoge');
Q : 1つめの.contentにテキストを追加したいのにエラーになる。
$()
で要素を取得するとjquery用のオブジェクトになる。
jqueryオブジェクトに対してのメソッドの実行は問題なく実行されるが、
jqueryオブジェクトから取得した要素はjqueryオブジェクトに変換してあげないとエラーになる。
メソッドで取得した要素は対象外。find()
やfirst()
など。
メソッドは.
で繋げて連続で使うことができる(メソッドチェーンという)。
$('.content').get(0).text('hoge');
https://api.jquery.com/get/#get-index
コメント頂いたので修正しました、ありがとうございました