0

我的脚本变得越来越大,我想将其中的一些移到一个单独的文件中,但无法让它工作。

我有以下内容:

jQuery(document).ready(function ($) {

some code....

initEdit(theme, isAdmin, dataAdapterCustomers, dataAdapterShops, dataAdapterOrderStatus);

some more code.....

});

在 edit.js 文件中,我有以下内容:

function initEdit(theme, isAdmin, dataAdapterCustomers, dataAdapterShops, dataAdapterOrderStatus) {

        $("#dateEdit").jqxDateTimeInput({ 
            width: '200px', 
            height: '18px', 
            formatString: "yyyy-MM-dd",
            theme: theme  
        });

some more code.....

}

这样做时,我收到以下错误:

未捕获的类型错误:对象 [object DOMWindow] 的属性“$”不是函数

我尝试将 initEdit 函数包含在以下内容中:

(function($) {
function initEdit(theme, isAdmin, dataAdapterCustomers, dataAdapterShops, dataAdapterOrderStatus) {

        $("#dateEdit").jqxDateTimeInput({ 
            width: '200px', 
            height: '18px', 
            formatString: "yyyy-MM-dd",
            theme: theme  
        });

some more code.....

}})(jQuery);

但后来我得到一个错误,它找不到 initEdit。

我确实包含了附加的 .js 文件,当我检查文件的源代码并单击它时,它会加载,因此页面确实加载了它。我必须补充一点,原始的 jQuery 脚本位于 php 文件的脚本标记中。我还在 noConflict 模式下运行 jQuery。

会不会是 edit.js 在从主函数调用之前被执行?

任何建议将不胜感激!

4

3 回答 3

0

试试这个:

function initEdit(theme, isAdmin, dataAdapterCustomers, dataAdapterShops, dataAdapterOrderStatus) {

        jQuery("#dateEdit").jqxDateTimeInput({ 
            width: '200px', 
            height: '18px', 
            formatString: "yyyy-MM-dd",
            theme: theme  
        });
}
于 2012-07-13T08:18:25.437 回答
0

包含 .js 文件的顺序是否正确?确保首先加载主 jqueryfile,然后是 edit.js,然后是调用该函数的代码。错误看起来不知道 jquery 语法。

于 2012-07-13T08:19:42.287 回答
0

同意@32bitfloat,你必须有正确的顺序包含.js文件..

第一次包含 jquery 文件 <script type="text/javascript" src="jquery.js">

然后包含您的文件包含该功能 <script type="text/javascript" src="function.js">

然后打电话

(function ($){ code here... })

于 2012-07-13T08:31:26.550 回答