-4

我有一个 java 脚本函数my_func(),我想在页面加载时调用它。这是我会得到的奇怪行为:如果我在文档中调用该函数准备就绪,它将不起作用:

function my_func(){
//do something
}
$(document).ready(function(){
   my_func();   
});

但如果我在一个事件上调用它就可以了:

function my_func(){
//do something
}
$(document).ready(function(){
   $('#myId').click( function(){
       my_func();
    });   
});

有人知道吗?我怎样才能在文档中直接调用它?

4

2 回答 2

2

您的问题是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) {
        // ...
    });
}

有点不幸的是,它是如此冗长,但这就是它的方式。Dojo 的文档require中提供了更多信息。

于 2013-04-07T00:02:22.613 回答
0

问题是没有在里面放一个函数$(document).ready(),见下文:

工作小提琴:

http://jsfiddle.net/whFNj/1/

$(document).ready(function(){
   my_func();   
});

function my_func(){
$("#black").css("background", "black");
}

相反,可能是您的函数正在代码中的其他位置创建,并且在 dom 准备好时尚未初始化。

于 2013-04-06T22:19:16.303 回答