web-dev-qa-db-fra.com

Vérifier si un div existe avec jQuery

Duplicate possible:
Existe-t-il une fonction "existe" pour jQuery

Oui, je sais que cela a souvent été demandé. Mais cela me trouble, car les résultats sur Google pour cette recherche montrent différentes méthodes (listées ci-dessous)

$(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');
    }
});

Lequel des 3 est le bon moyen de vérifier si la div existe?

EDIT: Il est dommage de voir que les gens ne veulent pas savoir quelle est la meilleure approche à partir des trois méthodes différentes. Cette question ne porte pas réellement sur "Comment vérifier si une div existe" mais sur quelle méthode est la meilleure, et si quelqu'un peut expliquer, pourquoi est-ce mieux?

294
Dementic

Le premier est le plus concis, je voudrais aller avec cela. Les deux premiers sont les mêmes, mais le premier est un peu plus court, vous économiserez ainsi en octets. Le troisième est tout simplement faux, car cette condition sera toujours évaluée comme vraie car l'objet sera jamais nul ou faux en l'occurrence.

179
karim79

Si vous vérifiez simplement l'existence d'un identifiant, il n'est pas nécessaire d'entrer dans jQuery , vous pouvez simplement:

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

getElementById renvoie null s'il est introuvable.

référence .

Si toutefois vous envisagez d'utiliser l'objet jQuery ultérieurement, je vous suggère:

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

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


});

Un sélecteur retourne toujours un objet jQuery , de sorte qu'il ne devrait pas être nécessaire de vérifier par rapport à null (je serais intéressé si est un cas Edge où vous devez vérifier null - mais je ne pense pas qu'il en existe).

Si le sélecteur ne trouve rien, alors length === 0 qui est "falsy" (une fois converti pour booler sa valeur false). Donc, si elle trouve quelque chose, alors ce devrait être "vérité" - vous n'avez donc pas besoin de vérifier si> 0. Juste parce que c'est "vérité"

93
Alex KeySmith

Comme Karim79 l'a mentionné, le premier est le plus concis. Cependant, je pourrais avancer que la seconde est plus compréhensible, car certains programmeurs Javascript/jQuery ne savent pas si les valeurs non nulles/fausses sont évaluées en tant que true dans les instructions if. Et pour cette raison, la troisième méthode est incorrecte.

9
tskuzzy