Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

Найдено here.

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

веселит :)

Ответ 5


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


Вы можете создать очень простой плагин 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);

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

С помощью оператора If

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

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

jsFiddle

Ответ 6

Просто используйте .each().

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

Простой...

Ответ 7

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

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

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