2011-06-18 21 views
2

继承人什么我尝试做等待所有的图像加载jQuery的阿贾克斯/ jQuery的pjax

$.pjax = function(options) { 
    var $container = $(options.container), 
     success = options.success || $.noop 

    // We don't want to let anyone override our success handler. 
    delete options.success 

    // We can't persist $objects using the history API so we must use 
    // a String selector. Bail if we got anything else. 
    if (typeof options.container !== 'string') 
    throw "pjax container must be a string selector!" 

    var defaults = { 
    timeout: 650, 
    push: true, 
    replace: false, 
    // We want the browser to maintain two separate internal caches: one for 
    // pjax'd partial page loads and one for normal page loads. Without 
    // adding this secret parameter, some browsers will often confuse the two. 
    data: { _pjax: true }, 
    type: 'GET', 
    dataType: 'html', 
    beforeSend: function(xhr){ 
     $container.trigger('start.pjax') 
     xhr.setRequestHeader('X-PJAX', 'true') 
    }, 
    error: function(){ 
     window.location = options.url 
    }, 
    complete: function(){ 


$container.trigger('end.pjax') 
}, 
success: function(data){ 
    // If we got no data or an entire web page, go directly 
    // to the page and let normal error handling happen. 
    if (!$.trim(data) || /<html/i.test(data)) 
    return window.location = options.url 

    // Make it happen. 
    // i think im not getting it right. 
    $(window).load(
     function() { 
      $container.html(data) 
     } 
); 

Official way to ask jQuery wait for all images to load before executing something但它的jQuery的Ajax请求后snipset。

,你可以在底部// Make it happen看到,即时试图返回其从HTML(数据)中的所有图像后,HTML(数据)已准备好为,我们能做到这一点不知?

谢谢!

亚当·拉马丹

回答

0

我相信你将不得不加载的HTML插入到DOM之前,浏览器将开始加载任何图像。您应该可以将其插入到隐藏的(display:none)div中,并将​​回调设置为隐藏的div。

This plugin改善了​​事件,以便在图像加载时更一致地触发它。