2013-03-08 68 views
0

我通过Ajax加载一个页面(长的故事,但我需要对JavaScript功能的浏览器一个HTML文件中的多个页面,并为他们不会JS是否禁用加载)。通过Ajax加载的页面也有额外的Ajax链接。所以页面被加载,如果你点击该页面中的链接,它会加载内容并更新dom。这一切工作正常,但如果你不断地点击阿贾克斯联系,直到浏览器崩溃,所以我猜测它必须是一个内存链接(在Chrome特别恶劣的更新页面变得慢的内容,但是这可能是因为它的一个比Firefox更多的资源)。阿贾克斯上传DOM变慢,直到浏览器崩溃

我想知道是否可能是因为在ajax回调函数中,我再次调用函数 - 我这样做,否则ajax内容中的链接将不会应用ajax事件(尽管我以为.on应该以与.live相似的方式做到这一点)。无论如何,我认为以下可能是显而易见的,非常感谢任何帮助。

function ajaxContent() { 
    $('.ajaxContentWrapper').on('click', 'a.ajaxContentTrigger', function(event){ 
     event.preventDefault(); 
     var myUrl = $(this).attr("href") + " .ajaxContent"; 
     $(".ajaxContentWrapper").load(myUrl,function(){ 
      ajaxContent(); 
     }); 

    return false; 
    }); 
}; 

回答

1

您是否尝试过在铬开发工具中查看ajax调用? 我也不明白你提供的功能,这种方法有什么问题吗?:

$('.ajaxContentWrapper').on('click', 'a.ajaxContentTrigger', function(event) { 
    event.preventDefault(); 
    var myUrl = $(this).attr("href") + " .ajaxContent"; 
    $(".ajaxContentWrapper").load(myUrl); 
}); 
+0

我已经试过看着ajax调用。他们工作正常,但响应时间变得越来越长。我提供的函数提供了一个回调,一旦ajax已经加载,然后触发一些额外的插件应用于加载的内容。为了简单起见,我没有添加额外的插件,但他们在.on点击之前(这就是为什么在回调中我引用主函数来重新加载这些插件) - 这是否有意义? – Eno 2013-03-08 09:22:36

+0

我觉得每次你打电话ajaxContent一个新的'click'处理程序被添加到元素,所以有些点击后有可能只是被调用AJAX尽可能多的处理程序。因此它变得越来越慢。除此之外,它没有利用jQuery的及时事件处理。 – Imperative 2013-03-08 09:28:04

+0

你打败了我。我回去了,并且双重检查了铬工具,这一次ajax调用实际上是一样的。这是点击处理程序放慢速度。所以,而不是引用主函数,我只是在回调中的特定插件加载和所有工作正常...虽然我敢肯定,当我这样做之前,ajax链接不加载在ajax内容...但嘿,现在所有的作品。感谢您的建议,并让我重新检查Chrome工具中的Ajax :) – Eno 2013-03-08 09:31:12