Событие jQuery на ответных данных с сервера

У меня есть контент с сервера, использующий функцию $ .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
});
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
0
350
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Код привязки события должен находиться внутри функции «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 ().

Другие вопросы по теме