无法从jQuery访问ajax加载的div中的元素

时间:2010-08-24 20:08:52

标签: jquery html

我正在使用jQuery的$ .get()将一些内容加载到id = results的结果:

$.get('dynamicpage.php',
function(data) {
 $('#results').html(data);
});

返回的内容中有一个选择:

<select id="myselect"><option value="10">10</option></select>

我已经在这个选择中添加了一个监听器:

$('#myselect').change(function() {
    alert("changed");
});

但是,侦听器中的此警报永远不会被触发。

我是否需要做一些特殊的事情来从jQuery访问加载的div中的元素?

谢谢!

2 个答案:

答案 0 :(得分:1)

问题是,在您将更改事件处理程序添加到select时,该选择不存在(或者已存在的选择已被替换)。

您应该使用jQuery live()函数,即使稍后添加该元素,也会保留事件绑定。

答案 1 :(得分:1)

试试这个:

$.get('dynamicpage.php',
   function(data) {
       $(data).find('#myselect').change(function() {
            alert("changed");
        })
        .end().appendTo('#results');
});

在这里.find() #myselect并附加更改事件。

或者这个:

$('#results').delegate('#myselect', 'change', function() {
            alert("changed");
        });

$.get('dynamicpage.php',
   function(data) {
       $('#results').append(data);
});

在此,您将.delegate()处理程序附加到#results,以便在change上监听#myselect事件。这比.live()更有效率。