грамотная проверка условия js/jquery

280
01 ноября 2017, 04:44

Здравсвуйте. Подскажите как сделать грамотную проверку на наличие условия.

Есть кусочек кода который отвечает за удаление нескольких класов по тач событию. При результате проверки ($('#popup_new_custom_kit').hasClass('popup-show')) = true Нужно чтоб код не срабатывал, классы не удалялись

Изначальный код

function closeSelectKitTouch() {
    $(document).on('touchstart' && 'touchend', function (e) {
        var container = $(".swipe-menu");
        if (container.has(e.target).length === 0) {
            $('.wrapper ').removeClass('active-swipe-menu');
            $('#main-wrap').removeClass('active-swipe-menu');
        }
    });
}

Измененый код( так все работает как нужно)

function closeSelectKitTouch() {
    $(document).on('touchstart' && 'touchend', function (e) {
        if ($('#popup_new_custom_kit').hasClass('popup-show')) {
            // что  тут должно быть?
        }
        else {
            var container = $(".swipe-menu");
            if (container.has(e.target).length === 0) {
                $('.wrapper ').removeClass('active-swipe-menu');
                $('#main-wrap').removeClass('active-swipe-menu');
            }
        }
    });
}

Меня смущает то что у меня в действиях для if просто пусто.

Собственно в этом и вопрос можно ли так оставлять? Или что там должно быть?

Answer 1

Поставьте "!" перед условием, т.е. :

function closeSelectKitTouch() {
    $(document).on('touchstart' && 'touchend', function (e) {
        if (!$('#popup_new_custom_kit').hasClass('popup-show')) { // т.е. "если не"
            var container = $(".swipe-menu");
            if (container.has(e.target).length === 0) {
                $('.wrapper ').removeClass('active-swipe-menu');
                $('#main-wrap').removeClass('active-swipe-menu');
            }
        }
    });
}

Так же обратите внимание на конструкцию:

'touchstart' && 'touchend'

Не равна ли она true? Честно, не уверен, но есть подозрение, что это будет отрабатывать не так, как ожидается.

Несколько ивентов объявляются просто через пробел:

'touchstart touchend'
READ ALSO
Как создать расширение для gogle chrome?

Как создать расширение для gogle chrome?

Здравствуйте Нужно создать расширение для Chrome, которое собирает данные с обычной на html странице и выводит в alert в виде xmlСпасибо заранее

329
Чтение переменной из java в коде Javascript

Чтение переменной из java в коде Javascript

Как я могу извлечь переменную из java "a"(ниже) в код javascriptИ читать динамически переменную "a" все время при заходе на любую страницу

287
Анимация во весь экран responsive iframe

Анимация во весь экран responsive iframe

Вот пример для попытки задания ширины блока div, хелп! нужно сделать респонсив ширину

201
Куки не сохраняется - JavaScript

Куки не сохраняется - JavaScript

Здравствуйте, программисты добрые - помогите пожалуйста исправить этого кода)В куки не пишет что заходил на сайт с этого куки:

287