$(document).ready()里面的函数

时间:2013-04-06 22:14:38

标签: javascript jquery

我有一个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();
    });   
});

有人有任何想法吗?如何直接在文档中调用它?

2 个答案:

答案 0 :(得分:2)

您的问题是,在加载其余DOM时,尚未加载dijit.form.TextBox。您需要更改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的更多信息,请参见Dojo's documentation

答案 1 :(得分:0)

问题是将函数放入$(document).ready(),见下文:

工作小提琴:

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

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

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

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