Выступление делегата ()
Я использую $("body").delegate(".selector", "click", function() { ... });
некоторое время, и мне было интересно: если я делегировать click
событие для содержащего элемента ближе к фактическому элементу, например table
полный кнопок, это будет быстрее, чем делегировать одно и то же событие body
Видя, как событие не должно пузыриться так далеко?
Базовый пример HTML:
<html>
<body>
<table>
<tr>
<td>
<input type="button" value="Delegated element">
</td>
</tr>
<!-- More, identical rows -->
</table>
</body>
</html>
Первый пример, используя body
:
$('body').delegate('input[type="button"]', 'click', function() {
// Do things
});
Второй пример, используя table
:
$('table').delegate('input[type="button"]', 'click', function() {
// Do things
});
Какой из двух приведенных выше примеров быстрее, и если один из них быстрее другого, почему?
1 ответ
Если я делегирую событие click для содержащего элемента, расположенного ближе к фактическому элементу, например, к таблице, заполненной кнопками, это будет быстрее, чем делегирование одного и того же события в тело, поскольку событие не должно пузыриться так далеко?
Да, это было бы быстрее и точно по той причине, которую вы предлагаете. Я думаю, что это полезная статья, и она имеет отношение к вашему вопросу.