使用jQuery,我通过使用jQuery的的交换网页中的某些内容.load()
函数。 我想一旦内容实际上已被加载到立即触发一个事件,而不是之前和不是之后 。 我为任何优美的解决方案! 为什么? 在这种情况下,我做旧“淡出,交换内容,淡入”的方针。 我的问题? 我想淡出回来只要在加载新内容。
注意事项:
- 使用回调函数,如
$('#object').load(url, callback)
,一旦触发的.load()
函数成功执行(实际加载的内容之前)。 没用在这里。 - 使用定时延迟衰落后面是不是正常的解决方案。 很“笨拙”,特别是对那些有更快的互联网连接。
- JavaScript的
onload
事件触发不起作用,因为该元素.load()
是改变已经加载到HTML DOM。 - jQuery的
.ready()
函数也不起作用,因为实际的元素已经加载。 - 我并不想创建一个
onload
或.ready()
子容器元素,因为这是一种解决方法是什么,我其实是想的,但也许是因为优美以上。
我如何能发射功能时(且仅当 )新的.load()
的内容最后加载,就像JavaScript的onload
的事件呢? 非常感谢。
编辑事实证明,jQuery的.load()
函数的工作完美,和我接近这一错误。
- 一旦
.load()
函数成功地完成,它调用的任何“ 回调程序员包括”功能,就这样接受回调作为其“论据”之一的任何其他jQuery函数。 - 该
.load()
函数完成 ,一旦错误或成功开始HTML更换和加载新的内容,但是这就是它! 然后,内容将采取但是需要多长时间来加载,但你的.load
调用已在这之前完成。 因此, 后期待回调运行.load
内容加载只会令你失望。 ;)
我希望其他人可以从这个就像我一样,包括那些谁想到了我认为是的情况下学习。 证明:在既定的jQuery AJAX .load页面 , 请求完成时加载完成而不是在执行回调。 尤里卡。 哎呦。 /编辑
尝试使用不同的方法,而不是load()
我会用暗示get()
像这样的东西可能更对你有用...
var jqxhr = jQuery.get(url,vars);
jqxhr.success(function(data){
# This will only be called once the remote content has been loaded in
# The data will then be stored in the data param and can be used within your site
});
jqxhr.error(function(data){
# Something went wrong, never mind lets just handle it gracefully below...
});
我希望这是你的问题的解决方案!
欲了解更多信息,请参阅http://api.jquery.com/jQuery.get/
我已经快速创建下面这个函数可以帮助你...它不精!
jQuery.fn.loadNewData = function() {
var object = jQuery(this);
var jqxhr = jQuery.get(arguments[0]);
// check for success
jqxhr.success(function(data) {
// load the data in
object.html(data);
});
jqxhr.error(function(){
alert('Failed to load data');
});
}
使用这个你可以调用如何类似于你将如何调用load()函数。
jQuery('#object').loadNewData(url);
我想你可能会误解你所看到的。 根据不同的浏览器上使用的是你不会看到在浏览器中新的元素,如果你在回调弹出一个警告,因为直到你放弃控制权返回给浏览器也不会重新描绘的DOM。 这并不意味着你不能抓住从DOM的新元素,并开始衰落他们采取以下的jsfiddle: http://jsfiddle.net/ttb55/8/在Chrome就会显示出第一个div当第二警觉到了,然后在第二个div褪色。 在IE中它不会显示第一个div当第二警报起来,这是我认为你是在回调过程中加载后的状态,但它仍然有效,一旦你点击OK,因为一切都在DOM的承诺。
在阅读了jQuery的文档页面jQuery.get()和jQuery.load() ,回调的说法引述如下:
“如果请求成功时执行的回调函数”。
我要强调的术语“请求”和“成功”。 该请求可能会成功,但是,这并不意味着,在加载内容。 同样的问题.load()
-功能不建,我想。
如果我想触发一个事件一旦新的内容最后装入,我需要采取不同的方法。
- 我可以使用JS
onload
事件,并且通过完全替换的HTML元素(具有替换代码包含一个触发它onload
属性)。 编辑:请注意,使用HTML iframe
元素是很可怕的,原始的,和“笨重”。 我只需要找到一个更好的办法尽快触发功能加载新的内容结束。 - 另外,我可以使用jQuery检查
.ready()
的新内容状态,但(“据我所知” /据我所知)如果检查的内容是一个新的 HTML元素,而不是预先存在的HTML元素,其只会工作内部的内容被改变。 jQuery的.ready()
的任何预先存在的元素的状态将(据我所知)尽管已如果加载新的内容显示为“准备就绪”。 也许我错了这一点,我想如果是的话加以纠正。
除非另有通知,这个答案将被标记为正确的。 原来的问题是误以为.load()
是我所需要的。 干杯!
文章来源: jquery .load( ) and trigger function AFTER new content loads? just like JavaScript onload event