例如:
<iframe onload="functionName('id-name', 'http://domain.com');"/>
与
$('#id-name').load(functionName('id-name', "http://domain.com');
(实际上......我的jQuery是对的吗?)
更新:谢谢,全部,回复。我正在使用:
$('#id-name').load(function() {
functionName('id-name', 'http://domain.com');
});
ETA:“body”应该是iframe(oops),所以我没有使用window.load。
答案 0 :(得分:3)
首先,你的jQuery的语法是错误的。类似的jQuery将是:
$('#id-name').load(function() {
functionName('id-name', "http://domain.com');
});
要绑定事件处理程序,您必须提供一个函数,实际上是在绑定时调用该函数。
但是,由于一些原因,这并不等同。
首先,你将处理程序绑定到#id-name
元素,而不是正文(unles你也做<body id="id-name">
。所以它在主体加载时不会运行,但只有当通常,每个元素的加载处理程序仅对具有异步加载的单独源的元素(例如图像和iframe)有用;它们允许您在填充这些元素时检测并采取操作。这是如果您动态更改源,则特别有用。
其次,假设你的jQuery代码在$(document).ready(...)
处理程序中,就像大多数jQuery代码一样,它在DOM完全加载之后才会运行。到那时,身体的onload
事件已被触发。此时添加的任何处理程序都不会为已加载的元素运行。我创建了一个fiddle来证明这一点:
<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");
});
});
仅触发inline body onload
警报。
但是,如果您只想要一个jQuery等效于在<body onload="">
属性中放置函数调用,则$(document).ready()
处理程序被认为是类似的。请参阅{{3>},相关侧栏中的第一个问题。
然而,正如Gloserio的回答所说,$(window).load(...)
确实有效,尽管有时间(特别认可,类似于$(document).ready()
)。经过修改的jQuery equivalent of body onLoad证明了这一点。
答案 1 :(得分:0)
$(window).load(function () {
functionName('id-name', "http://domain.com');
});
似乎相当于身体的load
事件。
相关:
答案 2 :(得分:-2)
onload
是在页面开始加载时触发的DOM事件。
.load()
是使用jQuery进行AJAX调用的快捷方式。
他们真的没有任何共同之处......除了在他们的名字中“加载”。