Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换后的jQuery加载事件_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 替换后的jQuery加载事件

Javascript 替换后的jQuery加载事件,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图用ajax加载一些内容,然后用新下载的内容替换页面上的现有内容。问题是我需要为替换的数据绑定load(handler(eventObject))event。我需要在加载所有图像时触发它。以下是我到目前为止的情况: $("#mainContentHolder").live("load", function(){ alert("images loaded!") }); $.get("content.htm", function(data){ $("#mainContentH

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

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

$.get("content.htm", function(data){
    $("#mainContentHolder").replaceWith(data);
    alert("content is loaded!");
});
我在加载内容时看到一个警报,但它发生在加载图像之前,而加载图像时的警报从未发生(我也尝试了
bind()
而不是
live()
)。
有人知道解决方法吗?

这可能是您的问题,也可能不是您的问题,但在加载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
元素,则图像加载事件处理程序将无法附加任何内容

如果不是这样的话,还有一点:(来自)

如果从浏览器缓存加载图像,则可能不会触发加载事件。为了考虑这种可能性,我们可以使用一个特殊的加载事件,该事件在映像准备就绪时立即触发。event.special.load为


希望其中一个可以帮助您。

是否可以将$.get设置为活载功能

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

这个内容,你是说仅仅是图像,还是有其他类型的额外资源?@negative也阅读这个技巧@Orbling,是的,它不仅仅是图像,但我假设我在
.get()
回发中获得了所有这些内容。@gov你在谈论什么技巧?我不认为这是一个问题。@negative,明白了。它应该有一些回调函数,比如ajax,在完成加载后执行,请参阅api,您的意思是需要将代码放在那里,我将删除关于缓存对象的应答,绑定加载事件时,只需检查对象上是否有
。完成
。哇,我太蠢了,谢谢,你说得对。出于某种原因,我假设
replaceWidth
将替换容器的内容。如果您只是想替换内容,而不是替换整个元素,那么可以使用
.html()
而不是
.replaceWith()
。请参阅此处的文档:在我的情况下不是这样,因为“已加载图像”处理程序应该在“已加载内容”处理程序之后立即触发。如果我的解释不够清楚,很抱歉。将.live(“load”,function()…放在替换为(data)之后如何?