2009-12-14 13 views
54

que actualmente hacen esto para comprobar si uno de los dos elementos existe:Si uno de los dos elementos existe, hacer algo

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

¿Hay una mejor manera de volver a escribir la misma? Quiero decir, ¿es .length lo mismo que .length > 0?

+0

Usted puede encontrar esta [pregunta] (http://stackoverflow.com/questions/31044/is-there- an-exists-function-for-jquery) responde a tu pregunta. –

Respuesta

25
if ($('#myDiv')[0]) { //do something } 

..works mejores!

Encontrado here.

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

EDITAR (por comentario) Seleccionar elementos por múltiples clases en una llamada:

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

Tenga en cuenta que también puede combinar los dos selectores en uno como el siguiente: '$ (". Element1, .element2 ")'. – bcat

+5

¿Es ".is()" lo mismo que ".length> 0"? ¿Cuál es la diferencia, si hay alguna? – 3zzy

+0

Nimbuz, buena publicación sobre el uso de .is() - http://www.bennadel.com/blog/1725-jQuery-s-is-Method-Checks-For-Any-Matching-Elements.htm – micahwittman

1

See Extremely updated version of this plugin here! Ahora usa la función de devolución de llamada para que pueda mantener la capacidad de recuperación si lo desea. Se puede sustituir por completo sentencia if o aún puede ser utilizado dentro de sentencia if


Se puede crear un muy simple jQuery plug-in para esto, como por ejemplo:

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

USE

// 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(); 

Con su estado de cuenta Si

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

Por supuesto, este plugin podría extenderse aún más a ser mucho más elaborado (el manejo de múltiples llamadas a la vez, la creación de elementos no existentes sobre la base de un cochecito), pero tal como está ahora, hace una función muy simple y muy necesaria ... ¿Este elemento existe? volver True o False

jsFiddle

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

esto devolverá "true" si el elemento existe y falso si no

aplausos :)

1

Sólo tiene que utilizar each().

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

simple ...

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

uso:

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