Чем заменить load?

Имеется код
$(window).load(function(){
    // читаем ввод с клавиатуры
  alert(1);
    
    $("#search_box").keyup(function(I){ ... });
});

Решил его изменить на
function start(){
    // читаем ввод с клавиатуры
  alert(1);
    
    $("#search_box").keyup(function(I){ ... });
});
start();

В обоих случаях срабатывает alert но во втором уже не работает обработчик кнопок. Как можно заменить $(window).load(function()) чтоб обработчики продолжали работать?
  • Вопрос задан
  • 2823 просмотра
Пригласить эксперта
Ответы на вопрос 3
delch
@delch
Frontend developer
Во втором случае не срабатывает, потому что вы не дожидаетесь окончания построения DOM модели документа, следовательно у вас там даже $("#search_box") будет равен []. Вариантов выполнения после загрузки много.

1. Обычная jquery анонимка, срабатывающая после загрузки DOM
$(function(){
  $("#search_box").keyup(function(I){ ... });
})

2. Явно привязаться на событие DOMContentLoaded
$(document).on("DOMContentLoaded", function(){
  // Дождались загрузки DOM, можем производить манипуляции с html элементами.
})
Ответ написан
Комментировать
swanrnd
@swanrnd
Издатель HTML5 игр
Подключите JS в конце страницы.
Ответ написан
Комментировать
@lnked
(function($) {

})(jQuery);


$(document).ready(function() {

});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы