我提供了定义函数滑块的代码,稍后,文档准备就绪后,我尝试使用该函数。
当我在 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);