当前位置: 首页 > 面试题库 >

为什么我不能在jQuery的document.ready()中定义函数?

濮阳奇逸
2023-03-14
问题内容

如果将它们放在document.ready()函数中,则函数的定义为未定义:

$(document).ready(function(){
  function foo()
  {
    alert('Bar');
  }
});

foo(); // Undefined

为什么会这样?我确定我只需要一些简单的理解即可:)


问题答案:

不确定为什么在范围内定义函数ready()对您很重要,但是您可以通过预先声明使其起作用foo

<html><head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
<script>
var foo;                           // Here's the difference
$(document).ready(function(){
  foo = function ()
  {
    alert('Bar');
  }
});
</script></head><body>
<input type="button" onclick="foo()" value="Click me">
</body></html>

显然foo()ready()由于ready()代码尚未运行,您之后不能立即从内联脚本中调用,但是您可以稍后再调用该函数。

只要确保foo()ready()代码运行之前没有任何东西可以尝试调用(或进行foo()无害函数的初始声明)。



 类似资料:
  • 我在做一个非常简单的两个按钮状态。如果我点击abutton,A组件显示,如果点击bButk,那么B组件。我正在映射通过数组的项目,以便每个项目都有自己的按钮状态。假设我点击项目1的按钮B,那么我只想要第一个项目B显示。现在所有这些都会同时被触发。我已经在构造函数中限制了它们,但我仍然无法只获得一次点击触发并显示相关组件。

  • 问题内容: 刚开始使用Javascript / jQuery时,我被告知要使用document.ready,但我从未真正了解原因。 有人可能会提供一些基本准则,说明何时在jQuery的内部包装javascript / jquery代码吗? 我感兴趣的一些主题: jQuery的方法:我对AJAX 使用了很多方法(通常在动态创建的DOM元素上使用)。单击处理程序是否应该 始终 在 内部 ? 性能:将各

  • 问题内容: 我正在使用jQuery SVG。我无法向对象添加或删除类。有人知道我的错误吗? SVG: 不会添加该类的jQuery: 我知道SVG和jQuery可以很好地协作,因为我 可以 定位对象并在单击对象时发出警报: 问题答案: 阅读以下两个答案。 jQuery 3修复了潜在的问题 Vanilla JS:可在现代浏览器中使用 jQuery(小于3)无法将类添加到SVG。 与SVG一起使用,因此

  • 我正在尝试限制关键字输入。 每当用户输入一个关键字,它就会在该关键字后面加上'span',例如。 如下面的html代码。 我可以限制字,但计数不准确,但当它达到5,它停止输入。 如果我刷新页面,我可以再输入一个,然后再阻止我一次。 奇怪的是,如果我为使用id就不起作用了。我得利用课堂。 我试过把,但不起作用,我必须保留它的资本。 jQuery: HTML:

  • 我正在编写一个Spring Boot(批处理)应用程序,它应该用一个特定的退出代码退出。一个要求是在数据库无法连接时返回退出代码。 我的方法是通过显式创建bean、调用并捕获和抛出实现的自定义异常来尽早处理此异常。配置如下: 我希望尽可能多地重用Spring Boot自动配置,这就是为什么我使用。我不知道这是不是应该走的路。 对的调用返回配置的url(从我的属性文件中): 但为什么Spring B

  • 我正在尝试使用JS SDK在Dropbox上上传一个文件。下面是我试图调用函数的html代码: 这是定义函数的文件 但是,由于我不知道的原因,我的函数不能被调用。我得到错误“referenceerror:Dropupload is not defined”,我不知道这是否与问题有关,但我得到另一个错误:“syntaxerror:import declarations may only at top