<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
<div onclick="abc()">测试测试</div>
<script> $(function(){
function abc(){
alert(123)
}
}) </script>
</body>
</html>

在ready函数里这样写会弹出函数未找到

如果写成这样:

$(function(){
$("div").on("click", function(){
alert(123)
}) })

这样会执行成功,或者去掉ready这一层也能执行成功。

百度上搜为什么第一种不能执行,得到的答案差不多就是因为ready是局部函数。点击事件是在全局里调用,但是我的疑问就是我触发点击事件也是在ready加载完之后执行的,也应该是在ready作用域中啊。希望有想法的朋友可以回复我

先记录下来,目前的结论是:ready里不能声明函数。


2015.12.18 13点16分编辑:
中午趁吃饭时间问了问搞前端的同学,终于明白了其中含义:
div绑定的onclick = abc() 在页面加载 DOM渲染的时候  就会去绑定abc函数,就要去找abc()的函数声明,但是函数声明是在ready里面的,所以并没有找到,也就是没有给abc绑定上函数,所以就算等页面加载完了再去点击,这时候abc已经定型了,就是没找到这个函数声明。
解决办法:
方法一:把ready那一层去掉。
方法二:HTML里不绑定onclick,在JS里写成$("div").on("click", function(){})

最新文章

  1. ORACLE中STATUS为INACTIVE但是SERVER为SHARED状态的会话浅析
  2. ansible非root用户批量修改root密码
  3. [C#]循环输出 000 - 999999
  4. C# Winform 窗体美化
  5. Asp.Net中用JS中操作cookie的方法
  6. Linux下Join命令
  7. Light OJ 1104 Birthday Pardo(生日悖论)
  8. Entity Framework — ( Database First )
  9. 原生promise
  10. 【easy】653. Two Sum IV - Input is a BST
  11. 配置STP、RSTP以及负载均衡
  12. AI tensorflow模型文件
  13. BZOJ.1210.[HNOI2004]邮递员(插头DP Hash 高精)
  14. C#创建自己的扩展方法
  15. 【SqlServer】SqlServer的游标使用
  16. 重读《深入理解Java虚拟机》一、Java虚拟机内存区域的划分
  17. Bootstrap中模态框多层嵌套时滚动条问题
  18. POJ3279(KB1-D 熄灯问题)
  19. Struts2 入门介绍(一)
  20. tornado用户指引(二)------------tornado协程实现原理和使用(一)

热门文章

  1. HDU 4708 Rotation Lock Puzzle(模拟)
  2. Codevs 2449 骑士精神 2005年省队选拔赛四川
  3. cocos2d-x v3.0的window平台搭建和编译成andriod程序
  4. rapidxml对unicode的支持
  5. (转)Libevent(2)— event、event_base
  6. ABP手机端调用API时的CORS
  7. H5小内容(一)
  8. DIV+CSS 网页布局之:混合布局
  9. ES6 语法简介
  10. yii2源码学习笔记(十九)