$(function(){})里面不能声明定义函数
<!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(){})
随机推荐
- Python:如何得到Popen的输出?
from:http://www.cnblogs.com/bluescorpio/archive/2010/05/04/1727020.html 最近在用subprocess中的Popen做个磁盘监控小 ...
- 【原创】Android多个xml文件的使用
Android中经常会使用多个xml文件,但在Mainactivity中使用的setContentView(R.layout.main)只加载main.xml文件,其他xml文件不加载进当前视图,当我 ...
- php设计模式:工厂模式
php设计模式:工厂模式 意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类. 工厂模式实现: 工厂模式中任何创建对象的工厂类都要实现这个接口,实现接口的方法体中都要实现接口中的方法,它声明 ...
- Python开发之--前端 HTML基础
一:HTML介绍 HTML:超文本标记语言,标准通用标记语言下的一个应用.包括"头"部分(英语:Head).和"主体"部分(英语:Body),其中"头 ...
- 13个小技巧帮你征服Xcode
本文由CocoaChina翻译组成员唧唧歪歪(博客)翻译自David McGraw的博客原文:13 Xcode Tips That Will Help You Conquer Xcode当谈论到iOS ...
- Java 文件操作大全
Java 文件操作大全 //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPat ...
- bzoj 3328: PYXFIB 数论
3328: PYXFIB Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 130 Solved: 41[Submit][Status][Discuss ...
- Unreal Engine4 蓝图讲解
UE4开发群:344602753 Unread Engine4的界面概况: UE4的效果可以说是比较好的,从整体架构上来说,和Unity3d的逻辑架构不太 一样,发现UE4不好上手,但是从理论上考虑, ...
- 【Ecmall】ECMall2.x模板制作入门系列(认识ECMall模板)
ECMall2.x模板制作入门系列之1(认识ECMall模板) 从ECMall2.0全新架构发布以来,随着版本的不断更新,ECMall已经逐渐走向一个稳定时期,是时候整理一些实用教程了.下面给大家带来 ...
- 两台CISCO2691测试静态路由汇总,浮动静态路由和负载分担静态路由配置
Dynagen的配置文件内容: #Lab - autostart = False [localhost] [[]] ram = image = C:\Program Files (x86)\Dynam ...