Выступление делегата ()

Я использую $("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 для содержащего элемента, расположенного ближе к фактическому элементу, например, к таблице, заполненной кнопками, это будет быстрее, чем делегирование одного и того же события в тело, поскольку событие не должно пузыриться так далеко?

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

Другие вопросы по тегам