Javascript 美元符号($)不是函数
我不确定为什么会出现这个错误,但是由于某种原因jQuery的Javascript 美元符号($)不是函数,javascript,jquery,Javascript,Jquery,我不确定为什么会出现这个错误,但是由于某种原因jQuery的$没有被识别 jQuery(window).load(function ($) { 'use strict'; /* Preloader */ $(".status").fadeOut(); $(".preloader").delay(1000).fadeOut("slow"); }); /* END WIDNOW LOAD */ 注意:将$更改为jQuery可以解决这个问题(因此我确信jQuery
$
没有被识别
jQuery(window).load(function ($) {
'use strict';
/* Preloader */
$(".status").fadeOut();
$(".preloader").delay(1000).fadeOut("slow");
}); /* END WIDNOW LOAD */
注意:将
$
更改为jQuery
可以解决这个问题(因此我确信jQuery被正确引用,我使用的是2.1.4版),但是我想继续使用$
作为语义。您正在覆盖函数中的$
变量,因为您有一个同名参数
删除$
参数,$
将再次引用全局范围的参数,等于jQuery
jQuery(window).load(function () {
'use strict';
/* Preloader */
$(".status").fadeOut();
$(".preloader").delay(1000).fadeOut("slow");
}); /* END WIDNOW LOAD */
您可以为传递到load
中的处理程序函数使用参数。我的建议与之相同:使用另一个名称作为论点。例如e
或eventArgs
请注意,您(或在此处登录的其他人)可能实际上正在尝试使用一种模式,以确保jQuery
在特定范围内作为$
可用(例如,因为可能与在全局范围内声明$
的另一个库存在冲突)。如果是这样的话,我建议如下:
(function($) {
$(window).load(function () {
'use strict';
/* Preloader */
$(".status").fadeOut();
$(".preloader").delay(1000).fadeOut("slow");
}); /* END WIDNOW LOAD */
}(jQuery));
这将把您的所有代码包装在一个函数中,该函数作为一个参数传入
jQuery
后立即执行。因为$
是该函数参数的名称,所以您可以确定$
等于该函数范围内的全局jQuery
。您正在用$
像这样试试
jQuery(window).load(function (e) {
'use strict';
/* Preloader */
$(".status").fadeOut();
$(".preloader").delay(1000).fadeOut("slow");
}); /* END WIDNOW LOAD */
也许你想要那样的东西
jQuery(document).ready(function ($) {
'use strict';
/* Preloader */
$(".status").fadeOut();
$(".preloader").delay(1000).fadeOut("slow");
}); /* END WIDNOW LOAD */
您的参数是
$
重命名您的参数,问题已解决。幸福的生活将继续。$
是一件大事。您可以将其传递给ready方法,但不能传递给load方法。例如,在wordpressjQuery(document.ready)(函数($){…})中处理$
代码>这是一个副本,我相信可能是Ya的副本,我认为这是OP正在寻找的,在ready handler中处理$to引用jQueryjQuery@A.Wolff说得好。可能是OP或其他人正在寻找一种模式,以确保$
引用jQuery
,我添加了一个脚注/第二部分,其中包含一些代码来处理这种情况。值得称赞的是,我指出了IIFE包装器,它在函数开始执行时将jQuery
绑定到$
。