web-dev-qa-db-fra.com

Si l'un des deux éléments existe, faites quelque chose

Je fais actuellement cela pour vérifier si l'un des deux éléments existe:

if ($(".element1").length > 0 || $(".element2").length > 0) {
  //do stuff...
}

Existe-t-il une meilleure façon de réécrire la même chose? Je veux dire, est .length le même que .length > 0?

54
3zzy
if ( $('#myDiv')[0] ) { //do something }

..fonctionne mieux!

Trouvé ici .

25
3zzy
if ($(".element1").is('*') || $(".element2").is('*')) {
    // code
}

MODIFIER (par commentaire) Sélectionner des éléments par plusieurs classes en un seul appel:

if ($(".element1, .element2").is('*')) {
    // code
}
48
micahwittman

Tous les éléments jQuery ont le .length propriété. Vous pouvez simplement aller:

if ($('img').length) // Implies: If this element exists..

http://jqueryfordesigners.com/element-exists/

16
Aaron
!$.isEmptyObject($.find('#urId'))

cela retournera "true" si l'élément existe et False sinon

à votre santé :)

2
bharadwaj

Utilisez simplement .each ().

$(".element1").each(function(){
  //Do Something here
}

Simple...

1
Adriano Pedro
$.fn.exists = function(ifExists) {
    return this.length ? ifExists.call(this, this) : this;
};

usage:

$('.element1, .element2').exists(function(els) {
    // this and els refers to $('.element1, .element2')
});
1
user3336882

Voir la version extrêmement mise à jour de ce plugin ici ! Utilise désormais la fonction de rappel pour que vous puissiez conserver la chaîne si vous le souhaitez. Peut remplacer complètement instruction if ou peut toujours être utilisé dans instruction if


Vous pouvez créer un plug-in jQuery très simple pour cela, en tant que tel:

jsFiddle

(function($) {
    if (!$.exist) {
        $.extend({
            exist: function(Elm) {
                if (typeof Elm == null) return false;
                if (typeof Elm != "object") Elm = $(Elm);
                return Elm.length ? true : false;
            }
        });
        $.fn.extend({
            exist: function() {
                return $.exist($(this));
            }
        });
    }
})(jQuery);

[~ # ~] utilisez [~ # ~]

//  With ID 
$.exist("#eleID");
//  OR
$("#eleID").exist();

//  With class name
$.exist(".class-name");
//  OR
$(".class-name").exist();

//  With just tag // prolly not best idea aS there will be other tags on site
$.exist("div");
//  OR
$("div").exist();

Avec votre relevé If

if ($(".element1").exist() || $(".element2").exist()) {
    ...stuff...
}

Bien sûr, ce plugin pourrait être étendu pour être beaucoup plus sophistiqué (gérer plusieurs appels à la fois, créer des éléments inexistants basés sur une poussette), mais tel qu'il est actuellement, il remplit une fonction très simple et très nécessaire ... cet élément existe? retourner True ou False

jsFiddle

1
SpYk3HH