1

我正在使用手风琴,它在加载时具有灰度图像,并且在鼠标悬停时图像以真实颜色显示。我的脚本中哪里有冲突的 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>
4

3 回答 3

3

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

(function($) {

...

}(jQuery));

然后你可以只使用$而不是,$j不会有冲突。

于 2012-08-01T08:01:21.010 回答
2

jQuery.noConflict();意味着 jQuery 不再使用$,但$j可以$释放用于其他用途。如果您没有$在其他任何地方定义,它将保持未定义。

如果你有$j = jQuery.noConflict();它意味着你必须从那时起使用$j(或jQuery),或者做类似的事情:

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

On the other hand, if $ is available, why use noConflict() at all?

于 2012-08-01T08:02:04.653 回答
0

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

于 2012-08-01T07:59:49.927 回答