452 votes

Comment voulez-vous vérifier si un sélecteur correspond à quelque chose en jQuery?

Dans Mootools, je venais d'exécuter if ($('target')) { ... }. N' if ($('#target')) { ... } jQuery dans le travail de la même façon?

726voto

Pat Points 18943

Comme les autres commentateurs sont ce qui suggère la manière la plus efficace de le faire semble être:

if ($(selector).length ) {
    // Do something
}

Si vous devez absolument avoir une exists() la fonction qui sera plus lente que vous pouvez faire:

jQuery.fn.exists = function(){return this.length>0;}

Ensuite, dans votre code, vous pouvez utiliser

if ($(selector).exists()) {
    // Do something
}

Comme répondu ici

90voto

redsquare Points 47518

non, jquery retourne toujours un objet jquery, peu importe si un sélecteur a été apparié ou non. Vous avez besoin d'utiliser .longueur

if ( $('#someDiv').length ){

}

20voto

Jon Erickson Points 29643

si vous avez utilisé:

jQuery.fn.exists = function(){return ($(this).length > 0);}
if ($(selector).exists()) { }

vous impliquerait que le chaînage a été possible quand il ne l'est pas.

Ce serait mieux

jQuery.exists = function(selector) {return ($(selector).length > 0);}
if ($.exists(selector)) { }

16voto

skqr Points 131

Je pense que la plupart des gens répondant ici n'a pas bien compris la question, ou alors je suis peut-être trompé.

La question est "comment faire pour vérifier si oui ou non un sélecteur existe en jQuery."

La plupart des gens ont pris cela pour "comment faire pour vérifier si un élément existe dans les DOM à l'aide de jQuery." Difficilement interchangeables.

jQuery permet de créer des sélecteurs, mais de voir ce qui se passe quand vous essayez de l'utiliser sur l'e avant d'initialisation;

$(':YEAH');
"Syntax error, unrecognized expression: YEAH"

Après cela, j'ai réalisé que c'était simplement une question de vérification

if ($.expr[':']['YEAH']) {
    // Query for your :YEAH selector with ease of mind.
}

Des acclamations.

15voto

PhilT Points 863

Encore une autre façon:

$('#elem').each(function(){
  // do stuff
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X