Jquery 为什么.bind()不能在.ready()函数之外工作?

Jquery 为什么.bind()不能在.ready()函数之外工作?,jquery,Jquery,单击一个按钮,我将显示一条警告消息。下面是我正在使用的代码 <script type="text/javascript"> // $(document).ready(function(){ $("#clickHere").bind("click",function(){ alert('clicked'); }); //}); </script> //$(文档).ready(函数(){ $(“#单击此处”).bind(“单击”,函数

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

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

//$(文档).ready(函数(){
$(“#单击此处”).bind(“单击”,函数(){
警报(“点击”);
});
//});

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

因为在分析javascript块时,DOM还没有准备好,因此,您引用的元素还不存在。

DOM需要准备好由JavaScript操作,然后才能将项目应用到它


除非已经在DOM中创建了按钮,否则不能。如果代码位于页面的头部,则不会发生这种情况,但如果代码位于结束正文标记之前,则不会发生这种情况。

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


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

从一个非常松散的意义上讲,考虑$('document').ready(),就像考虑Main一样()其他编程语言中的方法。

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


问题:
是在
标记之前还是之后?你的问题几乎就是为什么“准备就绪”很重要的典型问题。我在脚本之后添加了标记。。