Если существует один из двух элементов, сделайте что-нибудь

В настоящее время я делаю это, чтобы проверить, существует ли один из двух элементов:

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

есть ли лучший способ переписать то же самое? Я имею в виду,.length аналогично .length > 0?

7 ответов


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

редактировать (за комментарий) выберите элементы несколькими классами в одном вызове:

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

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

..работает лучше всего!

нашел здесь.


все элементы jQuery имеют .length собственность. Вы можете просто пойти:

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

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


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

это вернет "true", если элемент существует, и False, если нет

ура :)


просто использовать .каждый.)(

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

простой...



см. чрезвычайно обновленную версию этого плагина здесь! Теперь использует функцию обратного вызова, так что вы можете поддерживать цепочку, если вы выбираете. Может полностью заменить если заявление или все еще может использоваться в если заявление


вы можете создать очень простой плагин jQuery для этого, как например:

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

использовать

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

С вашим заявлением If

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

конечно, этот плагин может быть расширен, чтобы быть гораздо более причудливым (обработка нескольких вызовов сразу, создание несуществующих элементов на основе коляски), но, как сейчас, он выполняет очень простую, очень необходимую функцию ... Существует ли этот элемент? возвращение True или False

jsFiddle


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

использование:

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