Question

    

Cette question a déjà une réponse ici:

         

Dans Mootools, je venais de lancer si ($ ('cible')) {...} . Est-ce que if ($ ('# target')) {...} dans jQuery fonctionne de la même manière?

Était-ce utile?

La solution

Comme d'autres intervenants le suggèrent, la méthode la plus efficace semble être la suivante:

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

Si vous devez absolument disposer d'une fonction exist (), ce qui sera plus lent, vous pouvez le faire:

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

Ensuite, dans votre code, vous pouvez utiliser

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

Selon la réponse ici

Autres conseils

Non, JQuery renvoie toujours un objet JQuery, qu'un sélecteur ait été mis en correspondance ou non. Vous devez utiliser .length

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

}

si vous avez utilisé:

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

vous voudriez dire que l'enchaînement est possible quand ce n'est pas le cas.

Ce serait mieux

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

Je pense que la plupart des personnes qui ont répondu ici n'ont pas bien compris la question, sinon je pourrais me tromper.

La question est de savoir comment vérifier si un sélecteur existe ou non dans jQuery. "

La plupart des gens ont utilisé ceci pour "comment vérifier si un élément existe dans le DOM à l'aide de jQuery". Peu interchangeable.

jQuery vous permet de créer des sélecteurs personnalisés, mais voyez ici ce qui se passe lorsque vous essayez de l'utiliser sur e avant de l'initialiser;

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

Après avoir rencontré ce problème, 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.
}

A bientôt.

Encore une autre façon:

$('#elem').each(function(){
  // do stuff
});
if ($('#elem')[0]) {
  // do stuff
}

Alternativement:

if( jQuery('#elem').get(0) ) {}

Je préfère le

    if (jQuery("#anyElement").is("*")){...}

Qui vérifie si cet élément est en quelque sorte un " * " (tout élément). Juste une syntaxe plus propre et le " is " est plus logique à l'intérieur d'un "si" et

jQuery.fn.exists = function(selector, callback) {
    var $this = $(this);
    $this.each(function() {
        callback.call(this, ($(this).find(selector).length > 0));
    });
};

Pour moi, .exists ne fonctionne pas, donc j'utilise l'index:

if ($("#elem").index() ! = -1) {}

commencez par créer une fonction:

$.fn.is_exists = function(){ return document.getElementById(selector) }

puis

if($(selector).is_exists()){ ... }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top