You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1. Метод `elem.closest(selector)` возвращает ближайшего предка, соответствующего селектору. В данном случае нам нужен `<td>`, находящийся выше по дереву от исходного элемента.
104
-
2. Если `event.target` не содержит элементов`<td>`, то вызов вернёт `null`, и ничего не произойдёт.
104
+
2. Если `event.target` не содержится внутри элемента`<td>`, то вызов вернёт `null`, и ничего не произойдёт.
105
105
3. Если таблицы вложенные, `event.target` может содержать элемент `<td>`, находящийся вне текущей таблицы. В таких случаях мы должны проверить действительно ли это `<td>`*нашей таблицы*.
Например, нам нужно сделать меню с разными кнопками: "Сохранить", "Загрузить", "Поиск" и т.д. И есть объект с соответствующими методами `save`, `load`, `search`....
115
115
116
-
Первое, что может прийти в голову – это найти каждую кнопку и назначить ей свой обработчик среди методов объекта. Но существует более элегантное решение. Мы можем добавить один обработчик для всего меню и атрибуты `data-action` для каждой кнопки в соответствии с названиями методов, которые они вызывают:
116
+
Первое, что может прийти в голову – это найти каждую кнопку и назначить ей свой обработчик среди методов объекта. Но существует более элегантное решение. Мы можем добавить один обработчик для всего меню и атрибуты `data-action` для каждой кнопки в соответствии с методами, которые они вызывают:
117
117
118
118
```html
119
119
<button*!*data-action="save"*/!*>Нажмите, чтобы Сохранить</button>
Делегирование событий можно использовать для добавления элементам "поведения" (behavior), *декларативно* задавая хитрые обработчики установкой специальных HTML-атрибутов и классов.
178
178
179
-
Приём проектирования «поведение» состоит из двух частей:
179
+
Приём проектирования "поведение" состоит из двух частей:
180
180
1. Элементу ставится атрибут, описывающий его поведение.
181
181
2. При помощи делегирования ставится обработчик на документ, который ловит все клики и, если элемент имеет нужный атрибут -- производит нужное действие.
182
182
@@ -209,7 +209,7 @@ One more counter: <input type="button" value="2" data-counter>
209
209
Для реального проекта совершенно нормально иметь много обработчиков на элементе `document`, установленных из разных частей кода.
210
210
```
211
211
212
-
### Пример "Тумблер" (Toggler)
212
+
### Пример "Переключатель" (Toggler)
213
213
214
214
Ещё один пример. Сделаем так, что при клике на элемент с атрибутом `data-toggle-id` будет скрываться/показываться элемент с заданным `id`:
0 commit comments