特定のDOM要素が存在するかどうかを確認する必要があります。私はそれを確認するためにlength
プロパティを示唆する他の投稿を見た。それはうまく動作します。しかし、length
の属性がなくても動作します。例:
!!$("#myElement"); // true
!!$("#myElement").length; // true
どちらのウェイも同じ値を返します。要素が存在するかどうかを確認するのに、length
プロパティを使用しないのは大丈夫ですか?
特定のDOM要素が存在するかどうかを確認する必要があります。私はそれを確認するためにlength
プロパティを示唆する他の投稿を見た。それはうまく動作します。しかし、length
の属性がなくても動作します。例:
!!$("#myElement"); // true
!!$("#myElement").length; // true
どちらのウェイも同じ値を返します。要素が存在するかどうかを確認するのに、length
プロパティを使用しないのは大丈夫ですか?
いいえ、は常にです。length
です。
jQueryオブジェクトが空でもnullでもないため、ここでロジックに問題があります。要素が選択されていなくても常にオブジェクトを返します。したがって、ブール値に確実に変換してセレクタが要素と一致しているかどうかを確認できません。
console.log(!!$('#exists')); // should be true
console.log(!!$('#doesNotExist')); // should be false
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="exists"></div>
あなたが上見ることができるように、両方のテストはtrue
を返します。
これは、存在しないことがわかっている要素(つまり長さが0)でテストすることを検討しましたか?結果はあなたを驚かせるかもしれません。 – BoltClock
ほとんどのコードでは、if($( "#myElement")。length){}を参照します。長さがない場合はfalseと評価され、長さがある場合はtrueと評価されます。 – Neil
要素が存在するかどうか気にしないので、 '$("#myElement ")'で偽陽性を得ています。 jQueryは常に要素が一致するjQueryオブジェクトを返します。したがって、実際に要素が内部にあるかどうかを常に確認するには '.length'をチェックします。 ►[** https://learn.jquery.com/using-jquery-core/jquery-object/**](https://learn.jquery.com/using-jquery-core)をご覧ください。/jquery-object /) – Nope