错误:$不是函数

时间:2012-08-01 07:56:34

标签: jquery

我正在使用手风琴,它在载荷上有灰度图像,鼠标在它上面以真实的颜色显示。 我的脚本中J查询的冲突在哪里.. 获得error : $ is not a function

<script type="text/javascript" src="js/jquery-1.4.3.min.js"></script>
<script type="text/javascript" src="js/kwicks.js"></script>
<script src="js/greyScale.js"></script>
<script>
$j = jQuery.noConflict();
$j(function () {
  $j('.greyScale').hide().fadeIn(1000); // fade in the grayscaled images to avoid visual jump
});
$j(window).load(function () {
  // user window.load to ensure images have been loaded
  $('.greyScale').greyScale({
    fadeTime: 500
    // call the plugin with non-defult fadeTime (default: 400ms)
  });
});
</script>
<script type="text/javascript">
$().ready(function () {
  $('.kwicks').kwicks({
    max: 535,
    spacing: 10,
    sticky: false
  });
});
</script>

3 个答案:

答案 0 :(得分:3)

将所有脚本代码粘贴在这样的闭包中:

(function($) {

...

}(jQuery));

然后您可以使用$代替$j,而且不会发生冲突。

答案 1 :(得分:2)

jQuery.noConflict();表示jQuery不再使用$,而是使用$j,以便释放$以供其他用途使用。如果你没有在其他任何地方定义$,它将保持未定义。

如果您有$j = jQuery.noConflict();,则表示您必须使用$j(或jQuery),或者执行以下操作:

(function( $ ) {
    $().ready(function() {
        $('.kwicks').kwicks({
            ...
        });
    });
})(jQuery);

另一方面,如果$可用,为什么要使用noConflict()

答案 2 :(得分:0)

使用.noConflict()后,您将无法使用$访问jQuery对象,因此您应该更改所有jQuery调用。