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

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

3 голосов
/ 11 сентября 2011

Я уже некоторое время использую $("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 Ответ

5 голосов
/ 11 сентября 2011

Если я делегирую событие click для содержащего элемента ближе к фактическому элементу, например таблицы, полной кнопок, это будет быстрее, чем делегирование того же события в тело, поскольку событие не имеетпузыриться так далеко?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...