我正在使用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中的元素?
谢谢!
答案 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()
更有效率。