Разница между on() и прямой привязкой события

#jquery

#jquery

Вопрос:

У меня есть веб-страница с jQuery (кажется, версия не имеет значения) в Chrome. Страница полностью загружена. Я пишу это в консоли Chrome:

 $(document).on('ready', () => {console.log('Hello');});
 

Я не получаю «Привет» в консоли. Однако при написании этого:

 $(document).ready(() => {console.log('Hello');});
 

‘Hello’ теперь находится в консоли.

В документации об этом нет ничего особенного, так почему же он работает таким образом? Я всегда думал, что on() функция — это просто синтаксический сахар.

Комментарии:

1. on() Функция jQuery не вводит никаких новых функций, которых еще не существовало, это просто попытка стандартизировать обработку событий в jQuery

2. Это тоже была моя интуиция — но почему существует такая разница?

3. ready это не событие — это $(document).ready() . Это все равно, что спрашивать, почему вы не можете сделать $(document).on("fadeIn"...

4. @freedomn-m правильно. Однако, чтобы ответить на ваш общий вопрос, т.Е.. В чем разница между click() и on('click') , ее нет. Все методы быстрого вызова on() выполняются внутри.

Ответ №1:

http://api.jquery.com/ready/

Существует также $(document).on(«ready», обработчик), устаревший с jQuery 1.8 и удаленный в jQuery 3.0. Обратите внимание, что если DOM становится готовым до того, как это событие будет присоединено, обработчик выполняться не будет.

Я не понимаю, что вы подразумеваете под «Ничего особенного в этом в документации, так почему же это работает таким образом? Я всегда думал, что функция on() — это просто синтаксический сахар »

Поскольку это было указано довольно четко. Если вы не используете jQuery <3.0.

В качестве альтернативы вы могли бы использовать:

 $(function(){
   console.log('Hello');
}); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

Комментарии:

1. Я не использую новый jQuery — и не нужно использовать, я спросил это просто из любопытства 🙂 под этой цитатой я подразумеваю, что в документации нет ничего о разнице между привязкой с помощью on() и прямым использованием функции

2. Нет разницы между прямой привязкой и использованием on для событий , но document ready — это не то событие , к которому вы можете привязаться. Как подтверждено в этом ответе. Если бы вы задали вопрос с реальным событием, ответ был бы другим, но вы спросили, почему $(document).on("ready"... не работает — и это не работает, потому что это не событие.

3. Кроме того, он устарел в версии 1.8, которая была выпущена в 2012 году, а затем удален в версии 3.0, которая была выпущена в июне 2016 года — так что вряд ли это «новый jquery». Возможно, вы могли бы сообщить нам, какую устаревшую версию jquery вы используете?