-->

jQuery的.load()和触发功能后,新的内容加载? 就像JavaScript的onload

2019-06-26 11:20发布

使用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页面 , 请求完成时加载完成而不是在执行回调。 尤里卡。 哎呦。 /编辑

Answer 1:

尝试使用不同的方法,而不是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);


Answer 2:

我想你可能会误解你所看到的。 根据不同的浏览器上使用的是你不会看到在浏览器中新的元素,如果你在回调弹出一个警告,因为直到你放弃控制权返回给浏览器也不会重新描绘的DOM。 这并不意味着你不能抓住从DOM的新元素,并开始衰落他们采取以下的jsfiddle: http://jsfiddle.net/ttb55/8/在Chrome就会显示出第一个div当第二警觉到了,然后在第二个div褪色。 在IE中它不会显示第一个div当第二警报起来,这是我认为你是在回调过程中加载后的状态,但它仍然有效,一旦你点击OK,因为一切都在DOM的承诺。



Answer 3:

在阅读了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