Событие jQuery для ответных данных с сервера - PullRequest
1 голос
/ 14 января 2009

У меня есть контент с сервера, использующий функцию $ .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
});

Ответы [ 3 ]

3 голосов
/ 14 января 2009

Вам необходимо изменить код на:

$.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.

0 голосов
/ 14 января 2009

Если вы можете использовать jquery 1.3 (выпуск сегодня), тогда изучите новый метод .live ().

0 голосов
/ 14 января 2009

Код привязки события должен быть внутри функции success, поэтому он будет запускаться после добавления #years на страницу. В противном случае jquery ищет #years и не может его найти, и привязка не выполняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...