#jquery
#jquery
Вопрос:
У меня есть веб-страница с jQuery (кажется, версия не имеет значения) в Chrome. Страница полностью загружена. Я пишу это в консоли Chrome:
$(document).on('ready', () => {console.log('Hello');});
Я не получаю «Привет» в консоли. Однако при написании этого:
$(document).ready(() => {console.log('Hello');});
‘Hello’ теперь находится в консоли.
В документации об этом нет ничего особенного, так почему же он работает таким образом? Я всегда думал, что on()
функция — это просто синтаксический сахар.
Комментарии:
1.
on()
Функция jQuery не вводит никаких новых функций, которых еще не существовало, это просто попытка стандартизировать обработку событий в jQuery2. Это тоже была моя интуиция — но почему существует такая разница?
3.
ready
это не событие — это$(document).ready()
. Это все равно, что спрашивать, почему вы не можете сделать$(document).on("fadeIn"...
4. @freedomn-m правильно. Однако, чтобы ответить на ваш общий вопрос, т.Е.. В чем разница между
click()
иon('click')
, ее нет. Все методы быстрого вызоваon()
выполняются внутри.
Ответ №1:
Существует также $(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 вы используете?