Функция 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)
должен быть кэширован. Остальная часть $()
также может быть кэширован, и перед функцией.
Второе: использовать шаблон стратегии