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

Проверка того, что селектор jQuery не находит результатов

Я использую Prototypejs, где $$ ( "selector" ) возвращает null, если элементы не найдены. Это удобно, потому что я могу сделать

if ($$("selector")) {}

чтобы проверить, находится ли элемент в DOM.

Однако в jQuery $(selector) будет возвращен [], если элемент не найден, поэтому теперь мне нужно сделать:

if ( $(selector).length > 0 )

Это делает код немного сложнее для чтения.

Мой вопрос: Какой лучший способ сделать это? Должен ли я расширять объект jQuery такими методами, как .empty() и .any(), или есть встроенные функции для этого?

Обновление: это также относится к другим селекторам в jQuery, которые должны, во всяком случае, возвращать только один результат (например, parent() или closeest())

4b9b3361

Ответ 1

$.fn.exists = function () {
    return this.length !== 0;
}

Используется как:

$("#notAnElement").exists();

Ответ 2

Использование length - лучший способ. Вы не должны использовать empty() или size() > 0, так как это добавляет еще одну запись в стек вызовов.

Ответ 3

if ( $(selector)[0] )

Это будет сделано.