У меня есть контент с сервера, использующий функцию $ .ajax (). Я пытаюсь заменить какой-то элемент этими данными, а затем манипулирую ими. Вот код:
$.ajax({
type: "GET",
url: "smpl.php",
success: function(servmsg){
$('#panelInfo').replaceWith('<p>' + servmsg + '</p>');
}
});
ответ от сервера:
<select id = "years">
<option>2008</option>
<option>2009</option>
</select>
когда я пробую какое-то событие на нем, он ничего не делает, например:
$('#years').change(function() { //or .click()
//do something
});

Код привязки события должен находиться внутри функции «Success», поэтому он будет запущен после того, как на страницу будет добавлено #years. В противном случае jquery ищет #years и не может его найти, и привязка не выполняется.
Вам необходимо изменить свой код на:
$.ajax({
type: "GET",
url: "smpl.php",
success: function(servmsg){
$('#panelInfo').replaceWith('<p>' + servmsg + '</p>');
$('#years').change(function() { //or .click()
//do something
});
}
});
В качестве альтернативы вы можете сохранить исходный код вызова ajax и использовать livequery следующим образом:
$('#years').livequery('change', function() { //or .click()
//do something
});
Затем, когда вы вставляете блок #years, событие change автоматически регистрируется.
Если вы можете использовать jquery 1.3 (выпуск сегодня), изучите новый метод .live ().