$(“body”)。ready()有效,但$(“body”)。load()不起作用?

为什么? 我对图片标签有同样的问题。

调用ready()回调。 永远不会调用load()回调。

浏览器:Mac上的Firefox3.6.8

编辑:

我以某种方式感觉我在JQuery中错误地使用了load()。 我指的文档: – http://api.jquery.com/load-event/

我在做

$(“body”)。load(function(){// do something});

这不对吗? 我看到一些代码在做: – $(“#id”)。load(“。/ newpage.html”); 但这2个是不同的API吗?

编辑2

还有一些代码可以解释我的整个问题: –

var tagString = ""; this.divElem.append(tagString); var imgElems = $("#"+imageId); var vowels = this; imgElems.each(function (index) { $(this).attr('id',imgId).attr('src',imageUrl) .attr('width',1).attr('height',1); $(this).load(function() { // do something. // This Damned! function is never getting called! }); }); 

作品

  $().ready(function() { $().load(function() { /// something. this worked! }); }); 

不起作用

  // without the ready() wrapper does not work $().load(function() { /// something. this worked! }); 

为什么? 我很高兴它有效。 但我不明白为什么!

-Ajay

与您链接到的页面上的示例一样,使用:

 $(window).load(function(){ // do something }); 

也许可以像你尝试的那样将事件绑定到body元素,但是你必须将代码放在body元素中。 如果你把脚本放在头部(脚本最好去的地方),那么当代码运行时,body元素就不存在了。

从技术上讲, $("anything").ready()有效…它甚至不会看选择器,尽管错误的选择器会在那里出错。 使用.load()它是一个事件处理程序 ,因此您需要确保在事件触发没有绑定,或者您正在侦听已经发生的事件。

.ready()和.load()完全不同。

 $("body").ready(onBodyLoaded); 

参考https://api.jquery.com/ready/

该行告诉浏览器在加载正文时调用函数onBodyLoaded。

 var url = some url var data = {} $("body").load( url , data, onComplete(responseText, textStatus, XMLHttpRequest) ) 

这告诉浏览器请求url,将POST数据传递到正文中,然后调用onComplete函数。

参考https://api.jquery.com/load/