Ответ 1
$.fn.exists = function () {
return this.length !== 0;
}
Используется как:
$("#notAnElement").exists();
Я использую Prototypejs, где $$ ( "selector" ) возвращает null, если элементы не найдены. Это удобно, потому что я могу сделать
if ($$("selector")) {}
чтобы проверить, находится ли элемент в DOM.
Однако в jQuery $(selector) будет возвращен [], если элемент не найден, поэтому теперь мне нужно сделать:
if ( $(selector).length > 0 )
Это делает код немного сложнее для чтения.
Мой вопрос: Какой лучший способ сделать это? Должен ли я расширять объект jQuery такими методами, как .empty() и .any(), или есть встроенные функции для этого?
Обновление: это также относится к другим селекторам в jQuery, которые должны, во всяком случае, возвращать только один результат (например, parent() или closeest())
$.fn.exists = function () {
return this.length !== 0;
}
Используется как:
$("#notAnElement").exists();
Использование length
- лучший способ. Вы не должны использовать empty()
или size() > 0
, так как это добавляет еще одну запись в стек вызовов.
if ( $(selector)[0] )
Это будет сделано.