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();を使用するか、次のようなことを行う必要があります。$jjQuery

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

一方、$利用可能な場合、なぜ使用noConflict()するのですか?

于 2012-08-01T08:02:04.653 に答える
0

.noConflict() を使用した後は、$ を使用して jQuery オブジェクトにアクセスできなくなるため、すべての jQuery 呼び出しを変更する必要があります。

于 2012-08-01T07:59:49.927 に答える