Припускаючи, що я просто хочу додати елемент простого обробника кліків, я завжди зробив це:
$("#mydiv").click(function() { ... });
Дивлячись на документи JQuery, це здається .on()
це "рекомендований" спосіб прикріплення обробників подій і замінює їх .bind()
, .delegate()
і .live()
:
З jQuery 1.7, метод .on () забезпечує всі необхідні функціональні можливості для додавання обробників подій. Для допомоги у перетворенні зі старих jQuery Методи подій див. .bind (), .delegate () і .live ().
І в документах для .click()
він говорить:
Цей метод являє собою ярлик для .bind ("клацання", обробник) у перших двох варіантах і .trigger ("клацання") у третьому.
Отже це випливає з цього .click()
використовує .bind()
який буде застарілим і замінено на .on()
, чи не так? Або це означає, що .click()
буде триматися навколо, але це дещо стане ярликом для .on("click")
?
В принципі, моє запитання - це ... Коли пишете код JQuery сьогодні, я повинен використовувати:
Variant 1: $("#mydiv").click(function() { ... });
або:
Variant 2: $("#mydiv").on("click", function() { ... });
?
Відповіді:
4 для відповіді № 1Особисто я б використовував on()
для всіх прив'язок подій з jQuery 1.7+.
Це означає, що не існує двозначності між елементами, які додаються динамічно, і тих, що доступні під час завантаження сторінки.
Крім того, як ви заявляєте click()
(та інші ярлики події) конвертуються в on("event", function() { ... });
у будь-якому випадку за допомогою jQuery, тому це економить крок у процесі - не те, що це робить помітну різницю звичайно.
І, нарешті, on("click")
читає краще на мій погляд.