2010-12-07 55 views
1

我想Ajax加载一些内容,然后用新下载的内容替换页面上的现有内容。问题是我需要绑定load(handler(eventObject))事件来替换数据。我需要在所有图像加载时触发。以下是我迄今为止:jQuery加载事件后replaceWith

$("#mainContentHolder").live("load", function(){ 
    alert("images loaded!") 
}); 

$.get("content.htm", function(data){ 
    $("#mainContentHolder").replaceWith(data); 
    alert("content is loaded!"); 
}); 

我看到当内容加载的警报,但之前加载图像和报警图像上载从未发生过它发生(我也试过bind()代替live()之前)。 有没有人知道这个问题的解决方法?

+1

此内容,您的意思是图片,还是有其他类型的额外资源? – Orbling 2010-12-07 00:18:03

+0

@negative阅读此提示也http://web.enavu.com/daily-tip/daily-tip-difference-between-document-ready-and-window-load-in-jquery/ – kobe 2010-12-07 00:21:34

+0

@Orling,是的,它是不仅仅是图像,而且我假设我在`.get()`回传中得到了所有的图像。 – 2010-12-07 00:25:46

回答

2

这可能是也可能不是你的问题,但它看起来就像当你加载AJAX的内容被替换您所附加的图像加载功能的容器:

$("#mainContentHolder").live("load", function(){ //you are attaching to current and future '#mainContentHolder' elements 
    alert("images loaded!") 
}); 

$.get("content.htm", function(data){ 
    $("#mainContentHolder").replaceWith(data); //'#mainContentHolder' element is replaced with something else 
    alert("content is loaded!"); 
}); 

不知道什么样的内容来了从您的AJAX调用返回,但如果它没有#mainContentHolder元素,则图像加载事件处理程序将不会附加任何内容。

如果这不是它,这里还有该位:(从http://api.jquery.com/load-event/

这是可能的,如果图像是从浏览器缓存加载负荷事件将不会被触发。为了说明这种可能性,我们可以使用一个特殊的加载事件,如果图像准备就绪,它会立即触发。 event.special.load是currently available as a plugin

希望其中的一个能帮助你。

0

是否可以将$ .get放入活动加载函数中?

$("#mainContentHolder").live("load", function(){ 
    alert("images loaded!"); 
$.get("content.htm", function(data){ 
    $("#mainContentHolder").replaceWith(data); 
    alert("content is loaded!"); 
}); 
});