Javascript $(document.ready()中的函数
我有一个java脚本函数Javascript $(document.ready()中的函数,javascript,jquery,Javascript,Jquery,我有一个java脚本函数my_func(),我想在页面加载时调用它。下面是我将得到的奇怪行为:如果我调用文档中的函数ready,它将无法工作: function my_func(){ //do something } $(document).ready(function(){ my_func(); }); 但如果我在某个活动中调用它,它就可以正常工作: function my_func(){ //do something } $(document).ready(function()
my_func()
,我想在页面加载时调用它。下面是我将得到的奇怪行为:如果我调用文档中的函数ready,它将无法工作:
function my_func(){
//do something
}
$(document).ready(function(){
my_func();
});
但如果我在某个活动中调用它,它就可以正常工作:
function my_func(){
//do something
}
$(document).ready(function(){
$('#myId').click( function(){
my_func();
});
});
有人知道吗?如何在document ready中直接调用它?问题在于没有将函数放入$(document).ready()
,请参见以下内容:
工作小提琴:
相反,可能是您的函数正在代码中的其他地方创建,并且在dom准备就绪时尚未初始化。您的问题是,
dijit.form.TextBox
在加载dom的其余部分时尚未加载。您需要更改my_func
代码以包含对require
的调用:
function my_func() {
require(['dijit/form/TextBox'], function(TextBox) {
// ...
var newBox = new TextBox();
// ...
});
}
每个Dojo类都需要这样做。例如,如果您还需要dijit.form.Button:
function my_func() {
require(['dijit/form/Button', 'dijit/form/TextBox'], function(Button, TextBox) {
// ...
});
}
有点遗憾的是,它如此冗长,但事情就是这样。有关
require
的详细信息,请参见。此函数的作用是什么?在哪里定义了my_func
?您可能正在执行:my_func=function(){…
而不是function my_func(){…
。有一点不同。不,该函数未在另一个函数中定义。请查看已编辑的question@Amin:那么,我们真的需要看看函数的内容;从您向我们展示的内容来看,它应该可以正常工作。谢谢您的回答,我知道这样一个简单的函数可以正常工作。我无法定义函数ide的作用域,因为正如我所说,我可以在$()内调用它我的问题是,如果我不能在ready函数中调用这个函数,而我可以在ready函数中的函数中调用它,那会是什么情况呢!!!这实际上解决了这个问题!:D非常感谢。我认为如果我在html标题中加上require就足够了,但看起来还不够!谢谢总之…@Amin:以前你可以在顶部使用dojo.require
,它会同步加载你需要的任何模块,但这会使页面无响应,因此在较新版本中,它被替换为这个异步require
,不幸的是,它需要对现有代码进行一些更改。
function my_func() {
require(['dijit/form/Button', 'dijit/form/TextBox'], function(Button, TextBox) {
// ...
});
}