我为什么得到'$ is undefined'?

时间:2013-07-05 12:07:39

标签: jquery wordpress

我正在使用Wordpress网站并从一些简单的sqripts开始:

(function () {
    // Flex
    if ($(".flexslider").length) {
        $('.flexslider').flexslider();
    }
})(jQuery);

我也试过

$(function () {
    // Flex
    if ($(".flexslider").length) {
        $('.flexslider').flexslider();
    }
});

jQuery正在运行,为什么$没有被识别?如果我将$替换为jQuery,则可以正常使用。

这也不起作用:

jQuery(document).ready(function() {

    $('.section_header').click(function(){
        alert('test');
    });
});

5 个答案:

答案 0 :(得分:5)

   (function ($) {
        // Flex
        if ($(".flexslider").length) {
            $('.flexslider').flexslider();
        }
    })(jQuery);

试试这个

顶部参数是用作底部参考的参考

所以例如你可以这样做

(function (somethingHereCool) {
    // Flex
    if (somethingHereCool(".flexslider").length) {
        somethingHereCool('.flexslider').flexslider();
    }
})(jQuery);

这种情况发生的原因(主要是在wordpress中)是因为wordpress使用jQuery的$.noConflict() 通过Defualt

所以这基本上意味着$不再属于jQuery,所以你可以像上面那样做,并重新定义该范围内的$供你使用。你基本上复制jQuery并将其提供给$

答案 1 :(得分:0)

$在jQuery中有不同的含义/功能。我在.jsp文件中制作jQueries时也注意到了这一点。我不确定$的设计是什么,但我在美元的地方使用jQuery

答案 2 :(得分:0)

jQuery还有一个nonConflict选项(参见:http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/)。如果定义了nonConflict,则不会识别$。

编辑:除此之外,如果“jQuery(document).ready(function(){”不起作用,我不认为jQuery实际上是正确链接的(或在你做任何事情之前)。

答案 3 :(得分:0)

以下适用于Wordpress

jQuery(function($) {
//code in here
});

答案 4 :(得分:0)

要添加到Connor said in his answer,基本上您需要将$作为参数传递给函数,以便将$用作jQuery

默认情况下不是这样的原因是因为jQuery为disable $提供了一个选项。这主要用于使用不同的JS框架,该框架使用自己的$变量实现,因此不会产生冲突。

使用$禁用jQuery。您需要编写以下内容,最好在导入jQuery库后直接编写。在导入任何其他框架之前还应该导入哪个。

jQuery.noConflict();