我可以在ajax容器中创建另一个ajax请求吗?

时间:2013-11-14 20:04:01

标签: ajax jquery binding delegates

我正在使用ajax来提取内容以创建灯箱类型的内容页面。它一旦加载就有一个next和prev按钮,因此使用了ajax。

我也希望使用Ajax进行页面导航。但是,如果有人点击页面链接,然后尝试使用灯箱功能,则jquery和ajax请求都不再在加载区域内工作。

我已经阅读了很多关于bind和delegate但不确定如何在这种情况下使用它们

这是我的主要代码:

// This gets called on document ready

    function clicky() {
        $link.click(function(e) {
            e.preventDefault();
            var linkPage = $(this).attr('href');

            if ($(this).hasClass('pages')){

                // PAGE specific code
                if ($('body').scrollTop() != 0) {
                    $('body').animate({ scrollTop: 0 }, 500, function(){
                        pageLoad(linkPage);
                    });
                } else { pageLoad(linkPage); }
                console.log('page');

            } else {

                // PRODUCT specific code
                if ($('body').scrollTop() != 0) {
                    $('body').animate({ scrollTop: 0 }, 500, function(){
                        productLoad(linkPage);
                    });
                } else { 
                    productLoad(linkPage);
                }

            }        
        });
    }

这是我对两个不同领域的ajax:

// Ajax stuff going on for pages

    function pageLoad(linkPage) {

            // Page stuff fades out

            history.pushState(null, null, linkPage);
            $("#page-content").load(linkPage + " #guts", function(){

               // Loads in page content

            });

    }

    // Ajax stuff going on for Products

    function productLoad(linkPage) {

            // Page stuff fades out

            history.pushState(null, null, linkPage);
            $("#product-content").load(linkPage + " #guts", function(){

            // Shows an overlay/lightbox and loads in content

            });

    }

编辑:这对我有用

$(document).on('click', '.link' , function(){

  console.log('this worked');
  return false;

});

1 个答案:

答案 0 :(得分:0)

这有效:

 $(document).on('click', '.link' , function(){
    console.log('this worked');
    return false;
 });