web-dev-qa-db-ja.com

Jqueryでdivが存在するか確認する

可能な重複:
jQuery用の「存在する」関数はありますか

はい、私はこれがたくさん頼まれたことを知っています。しかし、それは私を混乱させます、なぜならこの検索のためのグーグル上の結果は異なる方法を示しているからです(下記)。

$(document).ready(function() {
    if ($('#DivID').length){
        alert('Found with Length');
    }

    if ($('#DivID').length > 0 ) {
        alert('Found with Length bigger then Zero');
    }

    if ($('#DivID') != null ) {
        alert('Found with Not Null');
    }
});

Divが存在するかどうかを確認する正しい方法は3つのうちどれですか?

編集:人々は3つの異なる方法からより良いアプローチが何であるかを学びたくないことを確認するのは残念です。この質問は実際には「divが存在するかどうかをチェックする方法」ではなく、どの方法が優れているか、そして誰かが説明できればなぜそれが優れているのかということです。

291
Dementic

最初は最も簡潔です、私はそれで行きます。最初の2つは同じですが、最初の2つは少し短いので、バイト数を節約できます。なぜなら、オブジェクトは never がnullになるか、またはそのことに関して偽造するからです。

177
karim79

単にIDの存在をチェックしているだけなら、 jQuery に入る必要はありません。

if(document.getElementById("yourid") !== null)
{
}

getElementByIdは、見つからない場合はnullを返します。

参照

しかし、後で jQuery オブジェクトを使用する予定の場合は、以下のようにお勧めします。

$(document).ready(function() {
    var $myDiv = $('#DivID');

    if ( $myDiv.length){
        //you can now reuse  $myDiv here, without having to select it again.
    }


});

セレクタは常に jQuery オブジェクトを返すので、nullをチェックする必要はありません(nullをチェックする必要があるEdgeのケースがある場合は興味がありますが、私はしません)ありません)。

セレクタが何も見つけられなかった場合、length === 0は "falsy"です(ブール値に変換するとfalseになります)。それでそれが何かを見つけたらそれは「真実」であるべきです - それであなたは> 0をチェックする必要はありません。それが「真実性」のためだけに

93
Alex KeySmith

Karim79が述べたように、最初は最も簡潔です。しかし、ゼロ以外の値がifステートメントでtrueに評価されることがJavascript/jQueryプログラマーにとっては明白ではない、または知られていないため、2番目の方法の方が理解しやすいと考えることができます。そのため、3番目の方法は正しくありません。

9
tskuzzy