мы начали использовать машинописный шрифт, и поскольку он легко позволяет компилировать в модули, мы также начали с 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?
обычно считается довольно плохая идея использовать атрибуты обработки событий, такие как onclick
, люди пытаются отойти от этого подхода.
если вам нужно обрабатывать клики динамически, и вы не хотите (или не можете) назначать прослушиватели событий непосредственно элементам, подумайте об использовании делегирования событий. вроде как это
$(document).on('click', "foo.selector", function(event) {
event.preventDefault();
console.log("You clicked:", this);
});
в основном в этом случае вы определяете прослушиватель событий в объекте document
не имеет значения, сколько элементов указанного типа (если есть) у вас есть на странице. он также автоматически будет работать с любыми новыми элементами, добавленными на страницу после того, как вы определили слушателя.