requirejs настройка событий в коде

0

мы начали использовать машинописный шрифт, и поскольку он легко позволяет компилировать в модули, мы также начали с requirejs. Есть ли способ связать события непосредственно в html? подобно

<a href="#" onclick="foo.bar();">
    <img src="foo.png" alt="foo">
</a>

Обычно нет проблем с динамической настройкой

$("foo.selector").click((e) => {
    this.bar(); 
    e.preventDefault();
});

Но мы имеем 2-3 страницы, где у нас есть до сотен (тысяч) строк таблицы и до 10 различных событий/строк. И только настройка событий занимает 0,5 секунды (может быть, не так много, но вместе с другими частями страницы и т.д. Это много). Я уже пытался переместить его в настройку "по требованию", где все линии имели mouseover => setup all the events но это не очень хорошо работало. У меня закончились любые идеи оптимизации, но один, переместите привязку evnet в html и подготовьте их после того, как код будет визуализирован. В любом случае внутренняя часть блока require кажется защищенной от этого поведения.

Есть ли способ использовать его внутри html?

Теги:
requirejs

1 ответ

0
Лучший ответ

обычно считается довольно плохая идея использовать атрибуты обработки событий, такие как onclick, люди пытаются отойти от этого подхода.

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

$(document).on('click', "foo.selector", function(event) {
   event.preventDefault();
   console.log("You clicked:", this);
});

в основном в этом случае вы определяете прослушиватель событий в объекте document не имеет значения, сколько элементов указанного типа (если есть) у вас есть на странице. он также автоматически будет работать с любыми новыми элементами, добавленными на страницу после того, как вы определили слушателя.

  • 0
    Выглядит интересно, проверит детали и возможную реализацию по моему сценарию через несколько часов.
  • 0
    Только что попробовал несколько тестов, и это работает так, как мне нужно, спасибо большое!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню