replaceWith之后的jQuery load-event

我正在尝试ajax加载一些内容,然后用新下载的内容替换页面上的现有内容。 问题是我需要为替换数据绑定load(handler(eventObject))事件。 我需要在所有图像加载时触发。 这是我到目前为止:

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

我在内容加载时看到一个警告,但它在加载图像之前发生,并且图像加载的警报从未发生(我之前也尝试过bind()而不是live() )。 有谁知道解决这个问题?

这可能是您的问题,也可能不是您的问题,但是当您加载ajax内容时,它看起来像您已附加图像加载function的容器正在被替换:

 $("#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 目前作为插件提供 。

希望其中一个会帮助你。

是否可以将$ .get放入实时加载function?

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