如何将事件绑定到通过ajax加载的数据仍然有效

时间:2012-02-29 13:11:51

标签: jquery

我已经实现了ajax标签,在1 ajax标签中我加载了一个用ajax更改月份和年份的日历。我遇到的问题是加载内容的绑定事件。

这是我正在使用的代码示例:

$.ajax({
     type: 'POST',
     url: 'main/ajaxjson/load_course_details',
     data: {page : which},
     success: function(home){       
            $('#ajax-content ').hide();
            $('#ajax-content').empty().append(home);
            $('#ajax-content').fadeIn();               
     }
 })

使用此代码我加载选项卡,我生成整个html并将其附加到ajax-content div。 在此之后,我将事件绑定用于新内容,如下所示:

('body').on('click', 'a.next-month', function(){
     // code here })

但问题是它在每次点击后都会丢失数据。我希望加载所有数据并轻松地对新数据执行ajax请求。

1 个答案:

答案 0 :(得分:0)

使用一个对象来存储已经发出的ajax调用:

var whichTree = {};

var handler = function(home){  
    whichTree[which] = home;     
    $('#ajax-content ').hide();
    $('#ajax-content').empty().append(home);
    $('#ajax-content').fadeIn();               
};

if ( whichTree[which] ) {
    handler(whichTree[which]);
}
else { 
    $.ajax({
        type: 'POST',
        url: 'main/ajaxjson/load_course_details',
        data: {page : which},
        success: handler
    });
}