Функция Jquery зависает

Я использую плагин под названием h5validate. Я обнаружил, что единственный способ запустить этот плагин - щелкнуть (размывая) поле, которое я хочу проверить, поэтому моя логика заключается в настройке функции, которая делает это для меня, когда я нажимаю (как это происходит) следующую кнопку; Я попытался вызвать функцию проверки напрямую, но она не работает.

Во всяком случае, мой вопрос:

1. Эта функция зависает браузер на ~3 секунды, почему?

$(document).on('click', '.tab', function () {
$this = $(this);
    if( $this.is('#tab1') )     { $('.tab-content-first .row .cell input:not(#ImageLocation)').blur(); }
    if( $this.is('#tab2') )     { $('.tab-content-1 .row .cell input:not(#ImageLocation)').blur(); }
    if( $this.is('#tab3') )     { $('.tab-content-2 .row .cell input:not(#ImageLocation)').blur(); }
    if( $this.is('#tab4') )     { $('.tab-content-3 .row .cell input:not(#ImageLocation)').blur(); }
    if( $this.is('#tab5') )     { $('.tab-content-4 .row .cell input:not(#ImageLocation)').blur(); }
    if( $this.is('#tab6') )     { $('.tab-content-5 .row .cell input:not(#ImageLocation)').blur(); }
});

Изменить: я обналичил $('это'); как объект, как предлагается.

Я решил, что это, вероятно, пузырится, документы рекомендуют мне stoppropagation(), но это не работает, я использую делегирование, поскольку я вызываю это через ajax, может, поэтому Stoppropagation () не работает?

1 ответ

Первый: $(this) должен быть кэширован. Остальная часть $() также может быть кэширован, и перед функцией.

Второе: использовать шаблон стратегии

Другие вопросы по тегам