lavezzi1
@lavezzi1

Как будет выглядеть этот код без jquery?

$(document)
    .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE,  Dropdown._dataApiKeydownHandler)
    .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)
    .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)
    .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
      event.preventDefault()
      event.stopPropagation()
      Dropdown._jQueryInterface.call($(this), 'toggle')
    })
    .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {
      e.stopPropagation()
    })


Пробовал банально повешать метод Dropdown._clearMenus на документ
document.addEventListener(Event.CLICK_DATA_API, Dropdown._clearMenus);
document.addEventListener(Event.KEYUP_DATA_API, Dropdown._clearMenus);

Не работает.

В чем секрет?
  • Вопрос задан
  • 261 просмотр
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
В чем секрет?

В том, что там по три параметра, а вы проигнорировали средний, например?
https://api.jquery.com/on/

Переписать можно как-то так:
document.addEventListener(Event.CLICK_DATA_API, function(evt){
  if (evt.target && evt.target.matches(Selector.DATA_TOGGLE)) {
    Dropdown._clearMenus(evt)
  }
});
Ответ написан
Ваш ответ на вопрос

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

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