我正在尝试在$(document).ready(..)
中调用一个回调函数如何从外部调用函数?
例如:
$(document).ready( function(foo) {
var bar = function() { ... };
});
// How do I call bar() from here?
答案 0 :(得分:5)
这取决于你想要的范围。如果您只想让bar在全局范围内,那么就这样做:
$(document).ready( function(foo) {
var bar = function() { ... };
window.bar = bar;
});
请记住,在JavaScript中,唯一具有作用域的代码块是函数,因此在if{}
,while{}
和其他类型的代码块中声明的变量对于它们所属的任何函数都是全局的,除非他们没有被宣布。
如果使用变量而不声明它,则与执行相同:
// Both of these variables have global scope, assuming
// 'bar' was never declared anywhere above this
window.foo = "Hello World!";
bar = "Hello World!";
所以上面的例子可以通过以下方式缩短:
$(document).ready( function(foo) {
window.bar = function() { ... };
});
答案 1 :(得分:2)
不要在就绪函数
中声明所有内容$(document).ready( function() {
...
bar();
});
function bar() {
...
}
答案 2 :(得分:0)
您可以在准备好的功能之外声明栏。那将是全球性的。
var bar;
$(document).ready( function(foo) {
bar = function() { ... };
});
答案 3 :(得分:0)
如果你想从外面调用bar()
,你为什么不在外面声明它,从内部范围传递你需要的任何参数?
function bar(baz, qix) { ...};
$(document).ready(function(foo) {
bar(whatever, whatnot);
});
bar(something, else);
答案 4 :(得分:0)
阅读完评论后,也许你想做这样的事情。如果您想要访问myUtilities
内外的内容,请使用ready
来最大限度地减少全局命名空间污染。
var myUtilities={};
$(document).ready( function(foo) {
myUtilities.bar = function() { ... };
});
// How do I call bar() from here?
a = myUtilities.bar();
抱歉,未经测试。可能是一个愚蠢的语法错误或两个。