2

单击按钮时,我将显示一条警报消息。下面是我正在使用的代码。

<script type="text/javascript">
// $(document).ready(function(){
    $("#clickHere").bind("click",function(){
        alert('clicked');
     });
 //});
 </script>

由于注释了 .ready() 行,当我单击按钮时,不会引发警报消息,但如果我取消注释这些行,则会引发警报。由于我已在“单击”事件上添加了对按钮的绑定,因此不应该在这两种情况下都显示警报消息吗?

4

6 回答 6

6

因为在解析 javascript 块时,DOM 尚未准备好,因此您引用的元素尚不存在。

于 2013-02-22T16:49:43.157 回答
3

这是因为该.ready()函数是一个 jquery 回调快捷方式,仅在 DOM (html) 加载到浏览器后触发。如果你在 ready 之外绑定你的函数,很有可能 DOM 元素还没有被加载,因此无法正确绑定。

您可以尝试将脚本移动到文档的底部,就在结束正文标记之前,这将导致它在您的其他 DOM 元素之后加载,但作为标准做法,我通常不绑定 DOM 元素,直到 DOM 是加载。

于 2013-02-22T16:51:11.133 回答
1

DOM 需要准备好被 JavaScript 操作,然后才能应用项目。

尝试阅读文档以了解为什么有必要。

于 2013-02-22T16:50:50.223 回答
1

除非该按钮已在 DOM 中创建,否则不会。如果您的代码位于页面的头部,则不会发生这种情况,但如果它位于结束 body 标记之前,那就没问题了。

于 2013-02-22T16:50:53.893 回答
1

为了实现在 DOM 尚未准备好解析时在元素上设置事件处理程序的功能,我相信您可以使用 'on' 方法,您可以“现在为元素上的一个或多个事件附加事件处理程序函数,并且在将来”。

http://api.jquery.com/on/

于 2013-02-22T17:15:22.977 回答
0

在一个非常松散的意义上,以与其他编程语言中的 Main() 方法相同的方式来考虑 $('document').ready()。

于 2013-02-22T16:51:40.097 回答