54 votes

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

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

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

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

48voto

micahwittman Points 6943
if ($(".element1").is('*') || $(".element2").is('*')) {
    // code
}

EDIT (par commentaire) Sélectionnez des éléments selon plusieurs classes en un seul appel :

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

25voto

Nimbuz Points 13377
if ( $('#myDiv')[0] ) { //do something }

..fonctionne le mieux !

Trouvé ici .

16voto

Aaron Points 922

Tous les éléments jQuery ont l'attribut .length propriété. Tu peux juste y aller :

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

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

2voto

bharadwaj Points 21
!$.isEmptyObject($.find('#urId'))

ceci retournera "true" si l'élément existe et "False" dans le cas contraire.

Merci :)

1voto

SpYk3HH Points 10533

Voir la version extrêmement mise à jour de ce plugin ici ! Utilise maintenant la fonction callback pour que vous puissiez conserver la possibilité de chaînage si vous le souhaitez. Peut complètement remplacer si la déclaration ou peut encore être utilisé dans si la déclaration


Vous pourriez créer un plug-in jQuery très simple pour cela, comme 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);

UTILISER

//  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 instruction 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 à partir d'une pyramide), mais tel qu'il est actuellement, il remplit une fonction très simple et très nécessaire ... Cet élément existe-t-il ? return True ou False

jsFiddle

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