Javascript 什么';在DOM中使用onload和在jQuery中使用.load()有什么区别?

Javascript 什么';在DOM中使用onload和在jQuery中使用.load()有什么区别?,javascript,jquery,Javascript,Jquery,例如: <iframe onload="functionName('id-name', 'http://domain.com');"/> (实际上……我的jQuery是对的吗?) 更新:谢谢大家的回复。我正在使用: $('#id-name').load(function() { functionName('id-name', 'http://domain.com'); }); ETA:“body”应该是一个iframe(oops),所以我没有使用window.load o

例如:

<iframe onload="functionName('id-name', 'http://domain.com');"/>
(实际上……我的jQuery是对的吗?)

更新:谢谢大家的回复。我正在使用:

$('#id-name').load(function() {
    functionName('id-name', 'http://domain.com');
});

ETA:“body”应该是一个iframe(oops),所以我没有使用window.load

onload
是一个DOM事件,在页面开始加载时触发

.load()
是使用jQuery进行AJAX调用的快捷方式

他们真的没有什么共同点…除了名字中有“负载”

$(window).load(function () {
              functionName('id-name', "http://domain.com');
            });
似乎相当于身体的
负荷
事件


相关的

  • SOF回答了所有问题:

首先,jQuery的语法是错误的。类似的jQuery是:

$('#id-name').load(function() {
    functionName('id-name', "http://domain.com');
});
要绑定事件处理程序,必须提供一个函数,实际上是在绑定时调用该函数

然而,由于以下几个原因,这并不等同

首先,您将处理程序绑定到
#id name
元素,而不是主体(除非您也绑定了
。因此,它不会在主体加载时运行,而只会在特定元素加载时运行。一般来说,每元素加载处理程序仅对具有异步加载的独立源的元素有用(例如图像和iFrame);它们允许您在填充这些元素时检测并采取行动。如果您动态更改源,这一点尤其有用

第二,假设jQuery代码在
$(文档).ready(…)中
handler,与大多数jQuery代码一样,它只有在DOM完全加载后才会运行。到那时,主体的
onload
事件已经触发。此时添加的任何处理程序都不会对已加载的元素运行。我创建了一个实例来演示这一点:

<body onload="alert('inline body onload');">
    <div id="foo"></div>
</body>

$(document).ready(function () {
    $("#foo").load(function () {
        alert("foo onload");
    });

    $("body").load(function () {
        alert("jquery body onload");
    });
});

$(文档).ready(函数(){
$(“#foo”).load(函数(){
警报(“foo onload”);
});
$(“body”).load(函数(){
警报(“jquery body onload”);
});
});
只有
inline body onload
警报才会触发

但是,如果您只想要一个相当于将函数调用放入
属性的jQuery,那么
$(document).ready()
处理程序被认为是类似的。请参阅相关的侧栏中的第一个问题


然而,正如Gloserio的回答所说,
$(window).load(…)
确实有效,尽管有时间限制(它被特别识别,类似于
$(document).ready()
)。这个修改说明了这一点。

不,您的jQuery应该是
$(function(){functionName('id-name',”http://domain.com“}”);
jquery应该是
.load(function(){functionName(…);});
在这里阅读jquery加载函数:使用
$(window.load(functionName)
?@dhsto这是错误的
load()
函数。是他询问的函数。当
.load()的第一个参数
是一个函数,它绑定了
onload
事件。请参阅。关于专门针对它进行的jQuery检查,您是对的。它处理
$(document)。ready
$(document)。load
$(window)。load
所有这些方式(回调立即启动,但仍然异步启动),如果偶数已经发生。@Paulpro谢谢。我知道
ready()
很特别——更重要的是,它会忽略它绑定到的元素。@Barmar谢谢!你明白为什么在这种情况下会触发两次警报吗?(JSfiddle:)(Re:“此时添加的任何处理程序都不会对已加载的元素运行。”)如果框架是异步加载的,我认为文档就绪处理程序不会等待加载它们。
<body onload="alert('inline body onload');">
    <div id="foo"></div>
</body>

$(document).ready(function () {
    $("#foo").load(function () {
        alert("foo onload");
    });

    $("body").load(function () {
        alert("jquery body onload");
    });
});