在内部创建函数是否正确
$(document).ready(function() {
像这样:
$(document).ready(function() {
function callMe() {
}
});
在DOM准备就绪且ready()
内部的事件被触发之前,.ready()
内部的函数不必调用。
只是为了澄清一点-这里的代码将说明这个问题:
$(function() {
var ind = 0;
// some event is executed and changes the value of the ind
// another event which affects the ind variable
// and another one - after this event we call our function
// there's another event - and we call our function again
我需要调用的函数需要ind
变量的更新值-我想我可以将其作为参数传递,但是有没有更好的方法呢?
另外,另一件重要的事情是,所讨论的function()
也可以更改ind
变量的值-例如递增它(ind++
)。
9条答案
按热度按时间of1yzvn41#
是的,您可以做到这一点,这只是scope的问题。
如果您只需要从
$(document).ready(function() { })
内部访问callMe()
,那么将函数放在那里是很好的,并且提供了一些架构上的好处,因为您不能在上下文之外访问函数。如果需要在document ready之外使用
callMe()
函数,则需要在该上下文之外定义callMe()
函数。更新
根据你的说明,你有两个选择:
1)在
ready()
外部声明变量,然后在ready()
内部定义变量:2)在
ready()
中,使用window.yourVariable = 'whatever';
定义变量mec1mxoz2#
这也行。
如果您使用
它可能不起作用,您可能会收到错误"function is undefined"(函数未定义)
zkure5ic3#
这样直接调用函数可能是一个更好的主意:
weylhg0b4#
当你在
$(document).ready
中创建一个函数时,可以保证在文档加载之前它不会被调用,当然,它只能从事件处理程序本身调用(在事件处理程序的后面)。换句话说,你试图做的事情是有效的(虽然不一定是可取的--你必须透露更多关于你试图完成的事情)。
ggazkfy85#
你可以这样做:
所以,你不需要把函数放在文档之外,代码就成组了,更有组织了。)
oxosxuxt6#
这绝对是法律的的。问题是你为什么要这么做?可能是把函数的作用域绑定到ready的作用域上,而不是全局绑定到window对象上。但是这是你真正想要的吗?我建议你看看javascript中的函数闭包,以及它是如何处理作用域的。为了帮助澄清它的必要性...
fxnxkyjh7#
看看是否可以通过将标记移到html文件的底部来消除使用document.ready的需要。这应该会使事情变得简单得多。否则,在document.ready的作用域之外声明函数,而只在document.ready函数作用域中调用它。
vddsk6oq8#
您可以像下面这样使用:
可以从任何事件调用此函数。
5n0oy7gb9#