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!"); }); });