2010-08-19 173 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