2013-12-14 3 views
0

загружают некоторое содержимое на страницу HTML с помощью метода JQuery .load() так:Jquery не может видеть элемент после его загрузок через .load()

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

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

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

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

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

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

ответ

3

Попробуйте .on()'s event delegation с помощью:

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

+1 - Это было быстро, даже не успел дочитать этот вопрос? – adeneo

+0

Отличный ответ, спасибо. Btw о ссылке вы предоставили. Там я нашел такое заявление: «Если на страницу вводится новый HTML-код, выберите элементы и присоедините обработчики событий после того, как новый HTML-код будет помещен на страницу». Правильно ли я понимаю, что он равен предложенному вами решению? Он не работает :( – srgg6701

+0

Ну да, вы можете использовать делегирование делегирования для добавления новых элементов на страницу или стандартного привязки событий, добавленных на страницу после добавления новых элементов на страницу. – j08691

Смежные вопросы