我将一个函数注册到一个带有onclick属性的按钮,并在$()块中定义这个函数(我知道这是一个不好的做法,它只是一个例子),当我点击按钮时,会发生错误:未捕获的ReferenceError:未定义hello。这是我的代码:
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(function(){
function hello(){
alert('hello');
}
});
</script>
</head>
<body>
<input type="button" id="btn" value="click" onclick="hello()"/>
</body>
如果我从$()块中放入hello函数代码,它就可以了。我知道在解析DOM时执行$(),当我单击按钮时,DOM必须已经被解析,那么为什么它报告错误? 感谢。
答案 0 :(得分:2)
你的代码假定hello是一个全局函数,它不是。
$(function(){
function hello(){
alert('hello');
}
$("#btn").click(hello);
});
答案 1 :(得分:1)
除了在$.ready
块内的执行(未定义)函数保证在DOM准备好被访问/操作之后执行之外没有区别。
你的问题是范围界定;您已创建了一个本地函数,该函数在处理事件的全局范围内无法访问。