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


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

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

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

7 54

7 ответов:

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

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

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...
}

конечно, этот плагин может быть дополнительно расширен, чтобы быть гораздо более причудливым (обработка нескольких вызовов сразу, создание несуществующих элементов на основе pram), но в настоящее время он выполняет очень простую, очень необходимую функцию ... Существует ли этот элемент? возвратить 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')
});