【发布时间】:2019-02-03 18:52:29
【问题描述】:
我对 jQuery 很陌生,但从我读过的内容来看,这对我来说没有意义。这是我的代码:
$(function() {
function grid() {
$("#main").hide();
}
});
<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script src="numbers.js"></script>
</head>
<body>
<div id="main" style="height:90vh; width: 90vw; background-color:lightgray">
<button onclick="grid()">grid</button>
</div>
</body>
</html>
当我将$(function(){...}); 放在我的代码周围时,它永远不会运行并且控制台返回ReferenceError: grid is not defined,但是如果我删除$(function(){...});,那么一切都会正常运行。
【问题讨论】:
-
删除它。
grid()需要在全局窗口范围内才能被onclick访问。如果你里面有其他 jQuery....将 grid() 移到外面 -
这就是为什么你不应该使用内联事件处理程序 (
onclick="grid()") 而是在grid可见的地方使用$('selector').on('click', grid)以附加事件侦听器的原因之一。 -
What does $(function() {} ); do?: 里面的代码在DOM准备好时执行。
标签: javascript jquery referenceerror