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

вот такой код в начале скрипта
var header__layer1 = $('.header__layer1');
var figures = $('.figures');
var top_menu = $('.top-menu');
var switcher = $('.switcher');

я вначале собираю все эти элементы, а теперь как мне , если какого-то элемента нет, остановить выполнение функции/скрипта? Просто перебором if( header__layer1 == undefined || figures == undefined ....) ??

просто ищу более выразительный способ

Может, можно как-то сделать типа
var header__layer1 = $('.header__layer1') or die
var figures = $('.figures') or die
var top_menu = $('.top-menu') or die
var switcher = $('.switcher') or die
  • Вопрос задан
  • 978 просмотров
Решения вопроса 2
dmitry_pavlov
@dmitry_pavlov
World-class .NET freelance contractor (remotely)
Согласен - проверка length. На счет эксепшена - можно, но как-то коряво (много дополнительного кода на обработку, не самого внятного притом). Тут ведь просто условие продолжения выполнения логики.

Если нужно действительно убедиться, что присутствуют обязательные все элелемнты просто (хотя бы по разу), я бы написал так примерно:

...
var selectors = [ '.header__layer1', '.figures', '.top-menu', '.switcher'];

var allElementsExist = $.grep(selectors, function ( selector ) {
    return $( selector ).length > 0;
}).length === selectors.length;

if (allElementsExist) {
   // логика
} else { 
   return; // можно else просто опустить если дальше ничего не должно быть, разумеется
}
...


Можно конечно и хелпер сделать, но я лично не большой фанат таких подходов

jQuery.fn.exists = function() { return this.length>0; }

// использовать потом так:
if ( $( selector ).exists() ) {
    // ... что-то
}
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Может, можно как-то сделать типа
var header__layer1 = $('.header__layer1') or die

Нельзя.
Но и с undefined сравнивать нельзя, $() всегда возвращает jquery-объект. Нужно смотреть свойство length у него:
if (!header__layer1.length || !figures.length)
Единственное, что можно сделать - создать функцию-хелпер, которая будет бросать ошибку, если элемент не найден.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
thecoder
@thecoder
Разработчик веб-приложений и сервисов.
$(selector).is('*') вернет true, если есть элемент. Выход из "скрипта" зависит от контекста, как правило достаточно просто сделать return из колбэка при несоответствии условий.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы