Réponses:
Consultez la FAQ jQuery ...
Vous pouvez utiliser la propriété length de la collection jQuery renvoyée par votre sélecteur:
if ( $('#myDiv').length ){}
lenght
place de length
; c'est une faute d'orthographe.
.length
.
(Puisque je ne semble pas avoir assez de réputation pour voter contre la réponse ...)
Wolf a écrit:
L'appel de la propriété length sur un objet non défini ou nul entraînera l'échec des navigateurs IE et webkit!
Essayez plutôt ceci:
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") !== null){ // do something }
ou
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") === null){ // don't do something }
S'il est vrai que l'appel de la propriété length sur un objet non défini ou nul entraînera l'échec des navigateurs, le résultat des sélecteurs de jQuery (le $ ('...')) ne sera jamais nul ou indéfini. Ainsi, les suggestions de code n'ont aucun sens. Utilisez l'une des autres réponses, elles ont plus de sens.
(Mise à jour 2012) Parce que les gens regardent le code et que cette réponse est assez élevée dans la liste: depuis quelques années, j'utilise ce petit plugin:
jQuery.fn['any'] = function() {
return (this.length > 0);
};
Je pense que $ ('div'). Any () lit mieux que $ ('div'). Length , plus vous ne souffrirez pas autant des fautes de frappe: $ ('div'). Ayn () donnera une erreur d'exécution , $ ('div'). longueur sera très probablement toujours faux.
__
Modifications en novembre 2012:
1) Parce que les gens ont tendance à regarder le code et à ne pas lire ce qui est dit autour du code, j'ai ajouté deux grandes mises en garde pour le lecteur au code cité de Wolf.
2) J'ai ajouté le code du petit plugin que j'utilise pour cette situation.
La fonction de recherche renvoie un tableau d'éléments correspondants. Vous pouvez vérifier si la longueur est égale à zéro. Notez le changement pour ne rechercher les éléments qu'une seule fois et réutiliser les résultats si nécessaire.
var elem = $("#btext" + i);
if (elem.length != 0) {
elem.text("Branch " + i);
}
De plus, avez-vous simplement essayé d'utiliser la fonction de texte - si aucun élément n'existe, cela ne fera rien.
$("#btext" + i).text("Branch " + i);
La fonction jquery $ () renvoie toujours une valeur non nulle - signifie que les éléments correspondent à votre sélecteur cretaria. Si l'élément n'a pas été trouvé, il renverra un tableau vide. Donc, votre code ressemblera à quelque chose comme ceci -
if ($("#btext" + i).length){
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
Dans jQuery 1.4, vous obtenez la fonction $ .isEmptyObject, mais si vous êtes obligé d'utiliser une ancienne version de jQ comme nous, les pauvres développeurs Drupal volent simplement, utilisez ce code:
// This is a function similar to the jQuery 1.4 $.isEmptyObject.
function isObjectEmpty(obj) {
for ( var name in obj ) {
return false;
}
return true;
}
Utilisez-le comme:
console.log(isObjectEmpty(the_object)); // Returns true or false.
peu importe ce que vous sélectionnez, la fonction $()
renvoie toujours un objet jQuery afin qu'il ne puisse pas être utilisé pour tester. Le meilleur moyen encore (sinon le seul) est d'utiliser la size()
fonction ou la propriété native length comme expliqué ci-dessus.
if ( $('selector').size() ) {...}
if ( $('#whatever')[0] ) {...}
L'objet jQuery qui est retourné par toutes les méthodes jQuery natives n'est PAS un tableau, c'est un objet avec de nombreuses propriétés; l'un d'eux étant une propriété "longueur". Vous pouvez également vérifier la taille () ou get (0) ou get () - 'get (0)' fonctionne de la même manière que l'accès au premier élément, c'est-à-dire $ (elem) [0]
Qu'en est-il de l'utilisation de "non défini"?
if (value != undefined){ // do stuff }
utilisez $("#selector").get(0)
pour vérifier avec null comme ça. get renvoie l'élément dom, jusqu'à ce que vous ayez affaire à un tableau, où vous devez vérifier la propriété length. Personnellement, je n'aime pas la vérification de la longueur pour la gestion des nuls, cela me déroute pour une raison quelconque :)
En utilisant la propriété length, vous pouvez le faire.
jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) {
//do somthing
}