Как проверить, существует ли элемент в другом элементе?

Я хотел бы, чтобы jQuery, понять, существует ли элемент в другом элементе.

Что-то вроде:

if($('#container').find('.search_element'))

должен возвращать YES, если .search_element находится в #container, NO иначе.

Как я могу это сделать? Пробовал $.contains('# container', '.search_element'), но кажется, что эта функция не работает...

Ответы

Ответ 1


¡¡¡ОБНОВЛЕНИЕ!!!

См. мой ответ ЗДЕСЬ ] для более надежного плагина


Вы можете легко сократить @Chris ответ:

if($("#container .search_element").length) { ...

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

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 your if statement
if($("#container .search_element").exist()) { ...

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

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

jsFiddle

Ответ 2

Простая проверка длины:

if($("#container").find(".search_element").length) {
    // If the length is greater than 0, it exists
} else {
    // else, false
}

Ответ 3

Вы можете использовать .is и :has, просто чтобы быть полным. Я бы предпочел решение, которое тестирует .length, хотя.

if($('#container').is(':has(.search_element)')) {
   // I haz that
}

Ответ 4

проверить длину массива

if($('#container').find('.search_element').length)

Ответ 5

jQuery имеет для этого метод по умолчанию:

$("#container").has(".selector");

http://api.jquery.com/has/