質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

8027閲覧

jQueryの要素の存在確認について

dea

総合スコア18

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/06/17 09:15

jQueryで、要素の存在確認の方法がいくつかありますが、
単純に存在確認が必須ではない場合(要素があれば処理をする、無ければ何もしない)、
存在確認はした方が良いのでしょうか。

例えばサイト全体で、common.jsというファイルを読み込み、
トップページだけに必要な処理がある場合、

html

1<body id="top"> 2 <div></div> 3</body> 4

以下のように書くのか、

jQuery

1$("#top div").wrap("<div class='divWrap'>");

それとも以下のようなかたちで存在確認をした方が良いのでしょうか?

jQuery

1if($("#top").length) { 2 $("#top div").wrap("<div class='divWrap'>"); 3}

※トップページだけにscriptを読み込めず、全体で読み込む「common.js」しか使えない環境の時

現在、限られた環境で制作する場面があり、また調べてみたところ以下のような記事を拝見しまして、気になり質問いたしました。

jQueryでDOM要素が存在するか確認してはならない

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2019/06/18 08:16

deaさん>解決されたのであれば、BA選出して、質問を閉じましょう。 それとも、まだ解決されてないのでしょうか?
dea

2019/06/19 01:49

コメントありがとうございます。解決いたしましたl 昨日は外出などで忙しくサイトを見れませんでした。
guest

回答2

0

提示コードについては「確認しなくてもよい」で yambejp さんの回答の通りです。
ただ、その理由が参考サイトのようにパフォーマンスのためならどうでしょうか?
一番遅いとしているものでさえ秒間347回も実行しているわけで通常は問題にならないかと思います。
手元の IE11 では、 !!$('.bar').length; を10万回実行するのに約0.7秒かかりました

投稿2019/06/18 02:54

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dea

2019/06/19 01:46

ご回答ありがとうございます!
guest

0

ベストアンサー

jQueryオブジェクトの性質から存在確認をする意味がないので
普通は確認しません。
つまりセレクタで選択別されたオブジェクトが1件もヒットしない場合でも
jQueryはlength:0のオブジェクトを返し、nullやundefinedと違い
そのオブジェクトに何か操作してもエラーにはならないからです。

投稿2019/06/17 09:19

yambejp

総合スコア116443

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dea

2019/06/17 09:32

早速ご回答いただきありがとうございます! 助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問