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

时间:2010-12-30 01:14:39

标签: jquery

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

调用

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

浏览器:Mac上的Firefox3.6.8

编辑:

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

我在做

$(“body”)。load(function(){   // 做一点事 });

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

修改2

在这里解释我的整个问题的更多代码: -

var tagString = "<img id='"+imageId+"'></img>";
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

3 个答案:

答案 0 :(得分:8)

与您关联的网页上的示例一样,使用:

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

.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/