#php #jquery
#php #jquery — jquery — запрос #jquery
Вопрос:
По сути, у меня есть контейнер div, который я повторно использую для заполнения различными данными, в зависимости от ссылки, на которую нажимают.
Этот контейнер div имеет имя класса «test_bed», а якоря, используемые для его заполнения, имеют имена классов «linkA», «linkb» и т.д.
$(document).ready(function(){
$("a.link").click(function(e) {
//prevent default behaviour:
e.preventDefault();
var a = "a";
var b = "b";
//pass vars to script:
$.post('00_php_script_.php', { x:a , y:b },
function(output){
//Replace div content with script output:
$('div#test_bed"').html(output).show();
});
});
});
Это один из якорей «linkA», как упоминалось выше:
<a href="" id="linkA" name="linkA" class="linkA">LinkA</a>
Все, что делает php-скрипт, это повторяет переменные вместе со ссылкой:
echo $_POST['x'] . " " . $_POST['y'] . " " . '<a href="" id="linkA" name="linkA" class="linkA">LinkA</a>';
Все работает нормально, за исключением того факта, что ссылка, которая возвращается из php-скрипта в test_bed div, похоже, не обнаруживается приведенным выше кодом jquery.
ВОПРОС:
Как мне сделать так, чтобы код, возвращаемый из php-скрипта, был обнаружен приведенным выше кодом jquery??
Любая помощь ценится ребятами….
Комментарии:
1. Что именно вы подразумеваете под «обнаруженным»? Появляется ли «ЛинкА»?
2. Появляется ссылка, но при нажатии на нее она ведет себя не так, как описано в приведенной выше функции, она просто действует как ссылка по умолчанию.
3. Когда в DOM добавляется новый элемент, к нему автоматически не применяются прослушиватели. Вы должны использовать
.live()
или.delegate()
, или применить обработчик к добавленной ссылке.4. Вы применяете обработчик событий jQuery к чему-то, что еще не существует.
Ответ №1:
Появляется ссылка, но при нажатии на нее она ведет себя не так, как описано в приведенной выше функции, она просто действует как ссылка по умолчанию.
Это связано с тем, что когда вы определяете click()
событие, определение применяется только к тем элементам, которые в настоящее время существуют в документе, а не к будущим.
Взгляните на .live()
, чтобы найти обходной путь. http://api.jquery.com/live /
Ответ №2:
$("a.link").live('click', function(e) {