jQuery Модал закрывается при третьем щелчке - PullRequest
0 голосов
/ 27 февраля 2020

Я использую модальный плагин jQuery на моем сайте. В большинстве мест плагин работает хорошо, но в одном или двух местах, когда я нажимаю на кнопку закрытия, расположенную за пределами модального окна, по какой-то причине требуется 2-3 щелчка, чтобы закрыть его.

Я получаю эту ошибку 2 раза после этого то же действие преобразуется в закрытие модального:

Uncaught TypeError: Cannot read property 'fadeOut' of null
    at o.modal.unblock (jquery.modal.min.js:5)
    at o.modal.close (jquery.modal.min.js:5)
    at HTMLAnchorElement.o.modal.close (jquery.modal.min.js:5)
    at HTMLDocument.dispatch (jquery-3.1.1.min.js:3)
    at HTMLDocument.q.handle (jquery-3.1.1.min.js:3)
    at Object.trigger (jquery-3.1.1.min.js:4)
    at HTMLAnchorElement.<anonymous> (jquery-3.1.1.min.js:4)
    at Function.each (jquery-3.1.1.min.js:2)
    at r.fn.init.each (jquery-3.1.1.min.js:2)
    at r.fn.init.trigger (jquery-3.1.1.min.js:4)

Есть предложения, как это решить?

Редактировать:

Модальное закрытие инициируется :

$('#addressBookFrom .close-modal').trigger('click')

, который находится внутри события onClick

body.on('click', '#addressBookTo .js-expand-parent', function (e) {
          e.preventDefault()

          // some logic ...

          $('#addressBookTo .close-modal').trigger('click')
        })
      })

Edit # 2:

Хорошо, так что я понял это. Проблема заключалась в том, что на каждом сайте была эта функция со следующим:

smartex.modal = function () {
  $('a.modal-open').click(function (e) {
    e.preventDefault()
    $(this).modal({
      fadeDuration: 200,
      closeExisting: false
    })
    $($(this).attr('href')).remove()
  })
}

Теперь, если эта функция вызывается более одного раза, вам нужно было нажимать для каждого вызова этой функции.

1 Ответ

0 голосов
/ 28 февраля 2020

Хорошо, так что я понял это. Проблема заключалась в том, что на каждом сайте была эта функция со следующим:

smartex.modal = function () {
  $('a.modal-open').click(function (e) {
    e.preventDefault()
    $(this).modal({
      fadeDuration: 200,
      closeExisting: false
    })
    $($(this).attr('href')).remove()
  })
}

Теперь, если эта функция вызывается более одного раза, вам приходилось нажимать для каждого вызова этой функции.

...