jquery 美元符号(“$”)不是函数

fwzugrvs  于 2023-10-17  发布在  jQuery
关注(0)|答案(5)|浏览(121)

我不确定为什么我得到这个错误,但由于某种原因jQuery的$没有被识别?

jQuery(window).load(function ($) {
    'use strict';

    /* Preloader */
    $(".status").fadeOut();
    $(".preloader").delay(1000).fadeOut("slow");

}); /* END WIDNOW LOAD */

注意:将$更改为jQuery解决了这个问题(所以我确信jQuery被正确引用,我使用的是2.1.4版本),但我想继续使用$进行语义。

qeeaahzv

qeeaahzv1#

你在函数中重写了$变量,因为你有一个同名的参数。
删除$参数,$将再次引用全局作用域,等于jQuery

jQuery(window).load(function () {
    'use strict';

    /* Preloader */
    $(".status").fadeOut();
    $(".preloader").delay(1000).fadeOut("slow");

}); /* END WIDNOW LOAD */

您可以为传递给load的处理程序函数使用参数。我的建议与Anik Islam Abhi's answer相同:使用另一个名称作为参数。例如eeventArgs
请注意,您(或其他登陆这里的人)实际上可能正在尝试使用一种模式,以确保jQuery在特定范围内(例如,因为可能与另一个也在全局范围中声明$的库存在冲突)。如果是这样的话,我建议沿着这些路线:

(function($) {
    $(window).load(function () {
        'use strict';

        /* Preloader */
        $(".status").fadeOut();
        $(".preloader").delay(1000).fadeOut("slow");

    }); /* END WIDNOW LOAD */
}(jQuery));

这将把所有代码 Package 在一个函数中,该函数将立即执行,并将jQuery作为参数传入。因为$是该函数参数的名称,所以您可以确定$等于该函数作用域内的全局jQuery

xbp102n0

xbp102n02#

您正在使用$重写事件参数
像这样试试

jQuery(window).load(function (e) {
    'use strict';

    /* Preloader */
    $(".status").fadeOut();
    $(".preloader").delay(1000).fadeOut("slow");

}); /* END WIDNOW LOAD */
6jygbczu

6jygbczu3#

也许你想要这样的东西?

jQuery(document).ready(function ($) {
    'use strict';

    /* Preloader */
    $(".status").fadeOut();
    $(".preloader").delay(1000).fadeOut("slow");

}); /* END WIDNOW LOAD */
oyt4ldly

oyt4ldly4#

$ = jQuery;

也可以工作。但不是最好的方法。

pepwfjgg

pepwfjgg5#

var $ = jQuery.noConflict();

把它放在js文件的顶部。

相关问题