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回答了所有问题:
$('#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");
});
});