首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax生成的内容和jquery事件绑定

问Ajax生成的内容和jquery事件绑定
EN

Stack Overflow用户
提问于 2013-10-09 00:05:34
回答 1查看 652关注 0票数 0

我有一个显示产品的页面。产品通过ajax请求显示。产品中包括分页按钮。这是我的$(‘document’).ready(函数(){)

代码语言:javascript
复制
    $.ajax({
            url: '<?=base_url().'catalog/show_listings';?>',
            type:'POST',
            dataType: 'json',
            success: function(data){
                    $('#result_container').html(data);
                }, // End of success function of ajax form
             complete : function(){
                    $('ul#pag-link > li > a').click(function(){

                        var link = $(this).attr('href')

                        $.ajax({
                            url: '<?=base_url().'catalog/show_listings';?>',
                            type:'GET',
                            dataType: 'json',
                            success: function(listings){
                                    $('#result_container').html(listings);
                                } // End of success function of ajax form       
                         }); // End of ajax call                            

                        return false;
                    });
                }
            }); // End of ajax call

在第一个ajax调用成功后,我将获得清单,并在div #result_container中显示它们。然后,在完成相同的ajax调用后,我为无序列表#pag-链接(分页按钮)中的锚创建一个on单击。这将返回下一组清单,并在#result_container中再次显示,它还将再次加载分页按钮。我是在完成时才这样做的,因为我不能更早地完成它,因为绑定时不存在分页按钮。

问题是,要使它正常工作,我必须再次在ajax完成中为分页按钮添加onclick事件。对于更多产品和分页的每一次ajax负载,我都必须这样做。

显然,THis不是正确的方法。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-09 00:09:48

将事件处理委托给始终存在的容器元素。

代码语言:javascript
复制
$.ajax({
    url: '<?=base_url().'catalog/show_listings';?>',
    type:'POST',
    dataType: 'json',
    success: function(data){
        $('#result_container').html(data);
    } // End of success function of ajax form
}); // End of ajax call

$('#result_container').on('click', '#pag-link > li > a', function(){
    var link = $(this).attr('href');

    $.ajax({
        url: '<?=base_url().'catalog/show_listings';?>',
        type:'GET',
        dataType: 'json',
        success: function(listings){
            $('#result_container').html(listings);
        } // End of success function of ajax form       
    }); // End of ajax call                            

    return false;
});

并在dom准备就绪(除了所有ajax调用之外)上运行此命令。

(另外,如果两个调用是相同的,则可以创建一个函数并使用它来避免重复的代码。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19260704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档