使用jquery,我怎么能在dom加载后做一些事情,我这样写:
<script>
$("#google").load(function() {
alert('ok');
});
</script>
<img src="http://www.google.com/images/logos/ps_logo2.png" id="google" />
但没有任何事情发生〜 如果我使用ready()而不是像这样加载:
<script>
$("#google").ready(function() {
alert(this);
alert('ok');
});
</script>
<img src="http://www.google.com/images/logos/ps_logo2.png" id="google" />
,它会起作用,但指针“this”不会是$(“#google”),它似乎是“窗口”或其他东西,我感到困惑〜
答案 0 :(得分:3)
如果我理解正确,您希望在之后操作#google
DOM完全加载。那么你想要使用的是$(document).ready(function() {//do stuff with #google});
.load()
用于发出ajax请求。你应该阅读here
了解#google是否动态生成也很有趣。
哦,在你的第二个例子中,你不能alert(this)
。 alert()
只需将字符串作为参数。
答案 1 :(得分:1)
在您的第一个代码中,您正在查找#google
元素并告诉它在加载图像时通知您。但是,在执行javascript时(上面元素,在代码中),存在没有#google
元素,因此事件监听器是没有分配给任何东西。
可悲的是,在DOMReady
侦听器中添加事件侦听器并不总能解决问题。例如,如果图像已经在浏览器缓存中,则#google
加载事件可能会在 DOMReady
之前发生。最安全的方法似乎是在创建图像后立即附加的监听器。
<img src="http://www.google.com/images/logos/ps_logo2.png" id="google" />
<script type="text/javascript">
$('#google').load(function() {
alert('ok');
});
</script>
如果您不满意在代码中间注入脚本块,但希望稍后将脚本推迟到某个地方,则可以随时收听$(window).load()
而不是$('#google').load()
。这相当于<body onload="">
,即它将在所有外部内容加载时运行。因此,当$(window).load()
出现时,您知道您的#google
图片已加载,但在加载后无法立即 。
答案 2 :(得分:0)
请改为尝试:
$(function() {
var that = $("#google");
alert(that);
});
此代码将在DOM完全加载时运行,由$(document)
ready()事件触发。
答案 3 :(得分:0)
只需使用以下内容:
$(document).ready(function() {
alert("The DOM has loaded");
});
.load函数用于触发ajax调用并将响应放在指定的div中。
答案 4 :(得分:0)
首先应该将事件处理程序绑定到load事件,然后将图像的src设置为实际启动加载。
$('#google').bind("load", function() {
alert('ok');
});
$("#google").attr("src", "http://www.google.com/images/logos/ps_logo2.png");