jQuery не может видеть элемент после его загрузки с помощью .load ()

0

Я загружаю некоторый контент в html-страницу с помощью метода jQuery .load() следующим образом:

$('#block_name').load('components/content.html #div1');

Он загружается идеально, но я столкнулся с неожиданной проблемой. После этого jQuery не может инициировать какую-либо процедуру для элементов загруженного содержимого. Например, если #div1 имеет ссылку с id my_link то такое вызов:

$('#my_link').on('click', function(){ /* some actions*/ });

не имеет никакого эффекта. Похоже, он просто не существует, хотя, если я попытаюсь выбрать его в dev console, я могу его найти. Также, если я устанавливаю обработчик внутри этой ссылки в шаблоне (content.html) следующим образом:

<a id="my_link" href="#" onClick="return myFunction();">Link text</a>

... он отлично работает. Итак, что может быть вызвано такой проблемой и есть ли способ избежать этого?

Теги:
javascript-events
dom

1 ответ

3
Лучший ответ

Попробуйте делегировать событие.on(), используя:

$('#block_name').on('click', '#my_link', function(){ /* some actions*/ });
  • 1
    +1 - Это было быстро, даже не было времени, чтобы закончить читать вопрос?
  • 0
    Отличный ответ, спасибо. Кстати о ссылке, которую вы предоставили. Там я нашел такое утверждение: «Если новый HTML внедряется в страницу, выберите элементы и прикрепите обработчики событий после того, как новый HTML будет помещен на страницу». Правильно ли я понимаю, что это эквивалентно предложенному вами решению? Это не работает :(
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню