Идея
У меня есть главная страница PHP, которая загружает содержимое в DIV из внешнего файла, используя JQuery и AJAX.
Страница работает следующим образом:
- На главной странице есть список ссылок, при нажатии на которые AJAX загружает на страницу внешний DIV.
- Этот новый DIV, затем имеет другой список ссылок, при нажатии AJAX снова загружает другой внешний DIV
- В настоящее время существует 3 DIV, содержащие списки ссылок, этот процесс можно повторять снова и снова.
Каждая из ссылок в DIV имеет параметры, которые фильтруют результаты для следующего DIV.
<div id="destination_Div01">
<a href="?Div01=1">Link</a>
</div>
проблема
$(document).ready(function() {
$('#Destination_Div01 a').click(function(){
$("#Destination_Div02").load("External.php"+$(this).attr('href')+" #Target_Div02");
return false;
});
$('#Destination_Div02 a').click(function(){
$("#Destination_Div03").load("External.php"+$(this).attr('href')+" #Target_Div03");
return false;
});
});
Когда страница загружается впервые, существует только один DIV, когда загружается новый DIV, я не думаю, что JQuery замечает, что теперь есть новый DIV со ссылками.
Итак, теперь, когда нажата ссылка в новом Destination_Div02, JQuery не распознает связанную функцию, и браузер продолжает загружать URL-адрес ссылки.
Вместо этого он должен использовать AJAX для передачи параметров URL ссылок во внешний файл PHP, фильтровать набор записей и возвращать новый DIV.
Как заставить JQuery работать с вновь сгенерированными ссылками?
Ответ
Кредит "great_llama"
Убедитесь, что у вас JQuery 1.3+ и измените код на $ ('# Destination_Div01 a'). Live ("click", function () {
$(document).ready(function() {
$('#Destination_Div01 a').live("click", function(){
$("#Destination_Div02").load("External.php"+$(this).attr('href')+" #Target_Div02");
return false;
});
$('#Destination_Div02 a').live("click", function(){
$("#Destination_Div03").load("External.php"+$(this).attr('href')+" #Target_Div03");
return false;
});
});