以前定义的函数现在未定义

时间:2015-03-05 01:18:26

标签: javascript jquery localhost undefined

我提供了定义函数滑块的代码,稍后,文档准备就绪后,我尝试使用该函数。

当我在 localhost 上运行时,这非常有效,但是当所有内容都上传到我的服务器时,我收到一个未定义的错误。

我可以在定义函数时在我的代码中放置断点,然后在使用它时稍后(但在从服务器运行时不再定义)。

由于它在localhost上工作正常,我看到该函数在从服务器运行之前被定义,我不确定从哪里开始查找我的问题。

我唯一能想到的是,在定义函数的时间之间,还有一些其他版本的jQuery被加载但没有这个定义,但是当在localhost上运行时也不会发生这种情况,或者服务器发送文件所需的时间是否有所不同?

$(document).ready(function() {
    $('.slider').slider({...});
});
/* this gets called first */
(function ($, j, k, l) {
    $.fn.slider = function (g) {...}
})(jQuery, window, document);

请提前帮助,谢谢。

新...

我已经实施了两个似乎都有效的解决方案,但我仍然想知道可能的原因以及为什么我必须采用这些解决方案?

解决方案1 ​​:我只是从脚本中删除参数jQuery。这是有效的,因为我在我的脚本之前包含了jQuery,但我担心原始问题会重新出现,

/* Now simply using the globally defined jquery object*/
$(document).ready(function() {
    $('.slider').slider({...});
});
/* this gets called first */
(function (j, k, l) {
    $.fn.slider = function (g) {...}
})(window, document); /* removed JQuery parameter here*/

解决方案2 :我将传入的jQuery对象捕获为一个新的非标准名称并编写我的脚本我继续引用$ for任何不涉及我的滑块函数的jQuery操作,然后当我想使用滑块功能时,我使用我保存的jQuery上下文 - 这个解决方案似乎更强大 - 任何想法?我还想输入最初的问题是什么?

/* Here I use both the globally defined jquery object and my saved context */
(function (myJQ, j, k, l) {
    myJQ.fn.slider = function (g) {...}
/* I move the onReady function inside so I can reference myJQ */ 
    $(document).ready(function() {
        myJQ('.slider').slider({...});/*use myJQ to call my slider function */
/* otherwise I use $*/
    });
})(jQuery, window, document);

0 个答案:

没有答案