jQuery中click事件是不是必须放在$(document).ready(function(){})之中才起作用,为什么?

jQuery中click事件是不是必须放在$(document).ready(function(){})之中才起作用,为什么?
放在这里面和不放在这里面有何区别?

阅读 10.4k
9 个回答

有两种可能放在外面会失效,总之你监听一个click事件,监听成功的前提是这个元素在当前dom中已被加载

那么比如你的js引用在该元素出现之前就会失效,如

<script>
$('#abc').click(funcition(){...});
</script>
<div id="abc"></div>

另一种就是可能你在页面加载完成后动态生成了某些元素,也就是说这个元素最初不在html中,此时click监听语句如果比生成语句执行的更早也会失效。

总之$(document).ready(function(){...})内部的语句会确保在dom加载完后执行,一般情况下只要你的js写在/被引用在页面尾部,而且没有动态生成的可能性的话,写在外面也无妨。

不是必须仿他里面 因为他是等待元素加载完再去绑定 加入元素没有加载完就去添加事件 是无效的

页面加载是从头到尾加载的,解析js的时候如果在js中使用的dom在这段js之前的位置没有出现那么会报错,$(document).ready(function(){})就是让你的dom加载完成之后再解析js的

等页面加载完后,它的事件才有用。就如同你吃东西,得先有食物吧。

新手上路,请多包涵

已经写在html里面就不需放在里面,如果改元素是由js生成的,就需放在里面

不是必须的 可以直接绑定`
a.clcik(funxtion(){

 ...

})

$(document).ready(function(){})这句话的作用是当页面加载时执行里面的方法,跟$(function(){})是差不多的,如果你是直接写在页面上可以不用加,如果是写在公共的js文件里,就需要加上这段话,不然是不会执行的

不一定,写在外面只需要一个调用方法就可以

可以试试 on方法 使用body代理未加载的元素的事件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏