Дом производительность - PullRequest
1 голос
/ 13 июля 2020

Я создаю приложение для дел, которое является интенсивным приложением CRUD. HTML для пользовательских задач выглядит примерно так:

<ul class="tasks-wrapper">
  <li class="task-item" data-id=1>Task_1</li>
  <li class="task-item" data-id=2>Task_2</li>
</ul>

По сути, щелчок по любому элементу li означает, что пользователь хочет обновить содержимое задачи, li элемент. Один из способов реализовать эту функциональность - выполнить следующее:

all_tasks = document.querySelectorAll('li.task-item');
all_tasks.forEach((task) => {
task.onclick = fire_callback_function_to_update_content_of_selected_task;
});

Приведенный выше код работает нормально, но я не могу определить, является ли он дружественным к производительности или нет. У меня вопрос: когда выполняется l oop? выполняется ли он каждый раз, когда dom запускает событие на странице или только когда он запускает событие в оболочке задач?

В настоящее время я изменил свою реализацию, используя делегирование событий в моем элементе оболочки задач, который дает лучшую производительность, но, тем не менее, я хочу понять производительность предыдущего решения и подумать, есть ли у кого-нибудь более эффективная реализация.

tasks = document.querySelector('ul.tasks-wrapper');
tasks .addEventListener('click', respondToTheClick);
function respondToTheClick (event){
  If (event.target && event.target.match('li.task-item')){
   // callfunction to update content of selected task using its id which you can get using
  event.target.id
  }
}
...