我目前正在使用一些ajax,一个成功的ajax结果是一些更多的内容被动态地添加到页面。我的问题是它是动态添加的,看起来我不能将任何事件附加到添加的元素中。
发生的流程是,用户从下拉列表中选择一个选项,该选项的值被发送到一个php函数,然后该函数返回一些更多的HTML到页面,该页面被附加到页面的div。
我知道domReady上不存在的元素有问题,因为我运行了一个length()检查,它确认页面上不存在这些元素。
这样我就可以在第一个ajax请求成功返回后添加的HTML上运行click事件了吗?
$(document).ready(function() {
//customise the select menus
$('#customselector').SelectCustomizer();;
$('.career_select .selectitems').click(function(){
var selectedCareer = $(this).attr('title');
$.ajax({
type: 'POST',
url: '/roadmap/step_two',
data: 'career_choice='+selectedCareer+"&ajax=true&submit_career=Next",
success: function(html){
$('.hfeed').append(html);
$('#grade_choice').SelectCustomizer();
}
});
});
$('#grade_choice_options .selectitems').click(function(){
var selectedGrade = $('#grade_choice_customselect').val();
alert(selectedGrade);
})});
发布于 2010-08-19 20:06:04
使用live()而不是直接使用click():
$('.career_select .selectitems').live('click', function() { ....live()实际上连接了任何与随后添加的元素匹配的新元素。
发布于 2010-08-19 20:12:26
尝试使用此插件:
http://brandonaaron.net/code/livequery/docs:Live Query通过绑定事件或自动触发匹配元素的回调来利用jQuery选择器的功能,即使在加载页面和更新DOM之后也是如此。
https://stackoverflow.com/questions/3521535
复制相似问题