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 est le même que .length > 0 ?

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

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

 if ($(".element1, .element2").is('*')) { // code } 
 if ( $('#myDiv')[0] ) { //do something } 

..souvent mieux!

Trouvé ici .

Tous les éléments jQuery ont la propriété .length . Vous pouvez juste aller:

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

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

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

cela retournera “true” si l’élément existe et False sinon

à votre santé 🙂

Utilisez simplement .each ().

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

Simple…


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


Vous pourriez 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); 

UTILISATION

 // 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 déclaration if

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

Bien sûr, ce plugin pourrait être encore plus sophistiqué (gérer plusieurs appels à la fois, créer des éléments non existants basés sur un landau), mais en l’état actuel, il remplit une fonction très simple, très nécessaire. cet élément existe? retourne True ou False

jsfiddle

 $.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') });