1

使用 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"),而且好像是"window"之类的东西,感觉很迷茫~

4

5 回答 5

3

如果我理解正确,您想在 DOM 完全加载#google 后进行操作。那么你要使用的其实是$(document).ready(function() {//do stuff with #google});

.load()用于发出ajax请求。你应该在这里阅读

知道#google 是否是动态生成的也很有趣。

哦,在你的第二个例子中,你不能做alert(this). alert()只需要一个字符串作为参数。

于 2011-05-19T09:13:11.477 回答
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图像已加载,但不能保证在加载后立即加载。

于 2011-05-19T09:10:40.350 回答
0

试试这个:

$(function() {
    var that = $("#google");
    alert(that);
});

此代码将在 DOM 完全加载时运行,由$(document) ready()事件触发。

于 2011-05-19T09:09:45.403 回答
0

只需使用以下内容:

$(document).ready(function() {
   alert("The DOM has loaded");
});

.load 函数用于触发 ajax 调用并将响应放在指定的 div 中。

于 2011-05-19T09:11:40.053 回答
0

您应该首先将事件处理程序绑定到加载事件,然后将图像的 src 设置为实际开始加载。

$('#google').bind("load", function() {
    alert('ok');
});
$("#google").attr("src", "http://www.google.com/images/logos/ps_logo2.png");

看到这个:http: //jsfiddle.net/VaLhf/

于 2011-05-19T09:21:33.923 回答