Как запустить $ (). Ready () в jQuery?
Используя jQuery, есть ли способ перезапустить запуск document.ready
в какой-то момент после загрузки страницы?
Обновление: jQuery удаляет их после их запуска. В моих экспериментах похоже, что jQuery будет запускать обратный вызов ().ready
как только он встретится после запуска начального события ready
.
- jQuery выбирает атрибут с использованием операторов AND и OR
- Добавление / удаление элементов из объекта JavaScript с помощью jQuery
- jQuery ajax и SSL?
- Проверьте, имеет ли текстовое поле пустое значение
- Удаление файла из нескольких загружаемых файлов при нажатии кнопки при использовании ввода файла HTML5
- управление сеткой для ASP.NET MVC?
- Правильный способ анимации теневого windows с jQuery
- json Uncaught SyntaxError: Неожиданный токен:
- Задержка jquery hover event?
- jQuery append fadeIn
- jQuery - включение / выключение флажка
- AngularJS: $ viewContentLoaded, выпущенный до частичного просмотра
- Передача динамического json-объекта на controller C # MVC
Если вам просто нужно убедиться, что новые функции инициализации запущены, вам не нужно ничего делать. Когда вы добавите новый обработчик событий в $().ready
, после того, как документ завершит загрузку, он будет запущен немедленно.
По-видимому, вызов $().trigger("ready")
напрямую не работает, потому что jQuery сбрасывает готовые обработчики событий после их $().trigger("ready")
. Вам нужно будет отслеживать функции, необходимые для вызова, и называть их, как показано ниже.
Конечно, было бы лучше просто вызвать функцию напрямую, поэтому вы не будете повторно запускать то, что вы не намеревались (некоторые плагины могут иметь свои собственные функции $ (). Ready (), которые они не ожидают для запуска дважды).
$().ready(initializationFunction); // later: initializationFunction(jQuery);
Вы можете сделать что-то вроде этого:
$(document).on('ready readyAgain', function() { // do stuff }); // At some other point in time, just trigger readyAgain $(document).trigger('readyAgain');
Заметка:
$(document).on('ready')
устарел в jQuery 1.8 согласно документации . Альтернативный метод заключается в следующем:
function myReadyFunction(){} $(myReadyFunction); // at some other point, just call your function whenever needed: myReadyFunction($);
Что делать, если вы попытались создать controller выполнения модуля прямо в функции готовности? Вид вроде этого:
Аарон – что бы вы пытались выполнить, повторно инициализируя переменные?
Отредактировано … Красота jQuery, на мой взгляд, – это функции обратного вызова. Почему бы просто не выполнить какое-либо действие / функцию после события.
В некоторых случаях вам нужно добавить еще один код (скрипты) в другие места кода, поэтому создание функции ограничивает запись всего кода в той же области. Поэтому я предпочитаю добавлять свои пользовательские события, а затем запускать их:
//Add a page Ready custom event $( document ).on( "page.ready", function( event ) { //Your Ready Scripts }); //Add a page Load custom event $( document ).on( "page.load", function( event ) { //Your Load Scripts }); //Trigger Ready scripts on page ready jQuery(function($) { $( document ).trigger( "page.ready" ); }); //Trigger Load scripts on page load $(window).load(function () { $( document ).trigger( "page.load" ); }); //Trigger the Custom events manually $( document ).trigger( "page.ready" ); $( document ).trigger( "page.load" );
https://learn.jquery.com/events/introduction-to-custom-events/
Я вижу один сценарий, где это было бы очень полезно, то есть если вы задерживаете загрузку jQuery до загрузки всего остального, то вы динамически добавляете новый элемент сценария для загрузки jQuery.
В этом случае $ (document) .ready не всегда запускается, так как во многих случаях документ будет полностью загружен до того, как jQuery будет загружен и настроит правильные обработчики событий.
Вы можете использовать именованные функции и вызывать их вместо этого, но он все равно сломает любой плагин, который будет полагаться на $ (document) .ready.
Если это поможет вам:
var document_on_ready = new Array(); function on_ready(){ for(i=0;i
Просто: вам просто нужно отключить флаг безопасности jQuery.isReady. Установите jQuery.isReady в false и используйте jQuery (document) .trigger (‘ready’) для повторного запуска этого события. Это очень полезно для навигации в стиле turbolinks.
ASP.Net UpdatePanel частичная загрузка страниц – это еще одно место, где может потребоваться повторное запуск функции загрузки, а не $().ready
– это подходящее место для этого. В этом случае вы можете либо использовать page_load, либо событие endrequest MS framework.
Вы должны иметь возможность с document.ready.apply ();