2010-08-19 226 views
1

我目前正在使用一些ajax,一个成功的ajax结果的结果是,一些更多的内容被添加到网页上。我的问题是,即时添加,它看起来像我不能附加任何事件添加到元素。jquery ajax帮助

会发生什么的流程是用户从下拉列表中选择一个选项,该选择的值被发送到一个PHP函数,然后返回一些更多的HTML到页面,该页面被附加到页面上的div 。

我知道domReady中存在的元素存在问题,因为我运行了length()检查并确认它们不存在于页面上。

是否有绕过这个,以便我可以在第一个Ajax请求成功返回后添加的HTML上运行单击事件。

$(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); 
}) 

});

+0

不知道我是否理解正确:是#grade_choice_options在您的AJAX调用之后追加的元素? – 2010-08-19 12:06:36

回答

4

使用live(),而不是点击(直接):

$('.career_select .selectitems').live('click', function() { .... 

现场()本质上线的任何新元素随后添加的匹配。

0

尝试使用这个插件:

http://brandonaaron.net/code/livequery/docs:实时查询通过结合事件或解雇的回调匹配的元素自动神奇,即使在页面已经被加载和DOM更新利用jQuery选择的权力。

+0

jQuery 1.4“live()”和“livequery”之间有什么重要区别。在这种特殊情况下,普通的旧jQuery中的“live()”工具就足够了,实际上它更可取。 – Pointy 2010-08-19 12:38:17