在
中创建函数是否正确$(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++
)。
答案 0 :(得分:42)
是的,你可以这样做,这只是一个范围问题;如果您只需要从callMe()
中访问$(document).ready(function() { })
,那么可以将函数放在那里,并提供一些架构优势,因为您无法访问该上下文之外的函数。如果您需要在文档就绪之外使用callMe()函数,则需要在该上下文之外定义callMe()函数。
function callMe() {
// Do Something
}
$(document).ready(function() {
callMe();
});
<强>更新强>
根据您的澄清,您有两种选择:
1)在ready()之外的DECLARE变量,但是然后在ready()
中定义变量var someVariable;
function callMe() {
someVariable++;
alert(someVariable);
}
$(document).ready(function() {
someVariable = 3;
callMe(); // Should display '4'
});
2)在准备好之内,使用window.yourVariable = 'whatever';
答案 1 :(得分:4)
这也可以。
$(document).ready(function() {
callMe = function() {
alert('hello');
}
});
callMe();
如果您使用
var callMe = function () { ... }
它可能无效,您可能会收到错误“函数未定义”
答案 2 :(得分:2)
在$(document).ready
内创建函数时,可以保证在文档加载之前不会调用它。当然,它只能从事件处理程序本身调用(稍后在事件处理程序中的某个地方)。
换句话说,你要做的事情是有效的(尽管不一定是可取的 - 你必须透露更多关于你想要完成的事情)。
答案 3 :(得分:2)
你可以这样做:
$(document).ready(function(){
var callMe = function(){
//enter code here
}
$(".my-class").on("click", function(){
callMe();
});
});
因此,您不需要将函数放在文档之外,代码就会变得分组并且更有条理。 ;)
答案 4 :(得分:0)
直接调用函数可能更好:
$(document).ready(myFunction);
function myFunction() {
// Your code here
}
答案 5 :(得分:0)
这绝对是合法的。问题是你为什么要这样做?可能将函数的范围绑定到ready的范围,而不是将其全局绑定到window对象。但那是你真正想要的吗?我建议看一下javascript中的函数闭包以及它如何处理作用域。帮助澄清它的必要性......
答案 6 :(得分:0)
通过将标记移动到html文件的底部,查看是否可以消除使用document.ready的需要。这应该会使事情变得更简单。否则,将该函数声明在document.ready范围之外,并在document.ready函数范围内调用它。
答案 7 :(得分:0)
您可以使用以下内容:
$(document).ready(function () {
printReport = function(rowIndex) {
// Your code here
}
});
您可以在任何事件中调用此函数。