来自服务器的响应数据的jQuery事件

时间:2009-01-14 09:59:35

标签: jquery ajax events

我使用$ .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 个答案:

答案 0 :(得分:3)

您需要将代码更改为:

$.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事件。

答案 1 :(得分:0)

事件绑定代码应位于“success”函数内部,因此它将在#years添加到页面后运行。否则,jquery正在寻找#years并且找不到它,并且没有绑定。

答案 2 :(得分:0)

如果你可以使用jquery 1.3(今天发布),那么请查看新的.live()方法。