Vérifier si un div existe avec jquery [dupliquer]

possibilité de dupliquer:

Existe-t-il une fonction "existe" pour jQuery

Oui, je sais que cela a été demandé beaucoup. Mais, il me confond, depuis les résultats sur google pour cette recherche montrent des méthodes différentes (énumérés 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 le div existe?

MODIFIER: C'est dommage de voir que les gens ne veulent pas savoir quelle est la meilleure approche à partir de trois méthodes différentes. Cette question n'est pas en fait sur "comment vérifier si une div existe", mais il s'agit de quelle méthode est meilleure, et, si quelqu'un pourrait expliquer, pourquoi il est mieux?

281
demandé sur Talha Awan 2011-08-01 17:34:48

3 réponses

le premier est le plus concis, je dirais. Les deux premiers sont les mêmes, mais le premier est juste un peu plus court, donc vous économiserez sur les octets. Le troisième est tout à fait faux, parce que cette condition évaluera toujours vrai parce que l'objet jamais sera nul ou faux pour cette matière.

171
répondu karim79 2011-08-01 13:36:31

si vous vérifiez simplement l'existence d'une carte D'identité, il n'est pas nécessaire d'entrer dans jQuery , vous pouvez simplement:

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

getElementById renvoie null si elle ne peut pas être trouvé.

référence .

si toutefois vous prévoyez d'utiliser le jQuery objet plus tard, je suggérerais:

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

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


});

un sélecteur toujours renvoie un objet jQuery , donc il ne devrait pas y avoir besoin de vérifier avec null (je serais intéressé s'il y a un cas de bord où vous devez vérifier pour null - mais je ne pense pas qu'il y en ait).

si le sélecteur ne trouve rien alors length === 0 qui est" falsy " (une fois converti en bool son faux). Donc s'il trouve quelque chose alors il devrait être "truthy" - de sorte que vous n'avez pas besoin de vérifier pour > 0. Juste pour "vérité

87
répondu Alex KeySmith 2014-01-02 18:04:53

comme karim79 l'a mentionné, le premier est le plus concis. Cependant, je pourrais faire valoir que la seconde est plus compréhensible car il n'est pas évident/connu de certains programmeurs Javascript/jQuery que les valeurs non-zéro/fausses sont évaluées à true dans les déclarations if -. Et à cause de cela, la troisième méthode est incorrecte.

8
répondu tskuzzy 2011-08-01 13:49:33