【问题标题】:jQuery event on responsed data from server来自服务器的响应数据的 jQuery 事件
【发布时间】:2009-01-14 09:59:34
【问题描述】:

我使用 $.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
});

【问题讨论】:

    标签: jquery ajax events


    【解决方案1】:

    您需要将代码更改为:

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

    【讨论】:

      【解决方案2】:

      事件绑定代码应该在 'success' 函数内,所以它会在 #years 添加到页面后运行。否则,jquery 正在寻找 #years 并且找不到它,并且没有进行绑定。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-26
          • 2023-03-12
          • 1970-01-01
          • 2017-04-14
          • 2011-01-21
          • 2023-04-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多