jQuery代码不与$运行(函数(){...});但将运行没有它

问题描述 投票:0回答:2

我很新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>

当我在我的代码put$(function(){...});,它永远不会运行,并且控制台返回ReferenceError: grid is not defined,但如果我删除$(function(){...});然后一切都正常运行。

javascript jquery referenceerror
2个回答
3
投票

$(function() { })的代码都有自己的范围,所以当您在定义一个函数,该函数只有范围内的存在。但是,你必须:

<button onclick="grid()">grid</button>

其查找一个名为在全球范围内(其中不存在),“网格”功能。

理想的情况是,如果你使用jQuery,你会做更多的东西一样:

<button id="grid">grid</button>

$(function(){
    $('#grid').on('click', function() {
        $("#main").hide();
    });
});

0
投票

你可以调用javascript函数或定义按钮的onClick监听器里$(document).ready

// using jquery 
$(document).ready(function() {
    $('#grid').click(function(){
        $("#main").hide();
    });
});

// using javascript function
function grid(){
   document.getElementById('main').style.display = 'none';
}
<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 id="grid">grid</button>
       <button onclick="grid()">grid2</button>
    </div>
  </body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.