美元符号(" $")不是函数

时间:2015-06-13 09:55:25

标签: javascript jquery

我不确定为什么我会收到此错误,但由于某种原因,jQuery的$未被识别?

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

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

}); /* END WIDNOW LOAD */

注意:将$更改为jQuery可以解决问题(因此我确保jQuery被正确引用,使用的是2.1.4版),但我想继续使用{{ 1}}用于语义。

3 个答案:

答案 0 :(得分:7)

您正在覆盖函数内的$变量,因为您的参数名称相同。

删除$参数,$将再次引用全局范围的参数,等于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));

这会将所有代码包装在一个函数中,该函数会立即执行jQuery作为参数传入。因为$是该函数的参数名称,所以您肯定知道$等于该函数范围内的全局jQuery

答案 1 :(得分:2)

您使用$

覆盖事件参数

试试这个

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

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

}); /* END WIDNOW LOAD */

答案 2 :(得分:2)

也许你想要那样的东西?

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

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

}); /* END WIDNOW LOAD */