未捕获的TypeError:$(...).ready不是函数

Nic*_*k M 10 jquery

嗨,我知道之前有人问过,但这里没有答案似乎对我有帮助.

我有这块JS:

$(document).ready(function() {
    $('.play-icon-hover').hover(function() {
         $('.cms-model-banner-overlay').addClass('.cms-model-banner-overlay-active');
        }, function() {
         $('.cms-model-banner-overlay').removeClass('.cms-model-banner-overlay-active');
    });
});
Run Code Online (Sandbox Code Playgroud)

我似乎得到了这个错误,但我不明白为什么?

Uncaught TypeError: $(...).ready is not a function
Run Code Online (Sandbox Code Playgroud)

谢谢

Pra*_*man 34

您正在使用Prototype.js以及jQuery.js.如果你想使用jQuery,最好将你的代码封装在IIFE中,如下所示:

(function ($) {
  // jQuery code using $
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

因此,您的问题的解决方案是您更改$为jQuery:

jQuery(document).ready(function() {
  jQuery('.play-icon-hover').hover(function() {
    jQuery('.cms-model-banner-overlay').addClass('.cms-model-banner-overlay-active');
  }, function() {
    jQuery('.cms-model-banner-overlay').removeClass('.cms-model-banner-overlay-active');
  });
});
Run Code Online (Sandbox Code Playgroud)

或者,使用IIFE:

(function ($) {
  $(document).ready(function() {
    $('.play-icon-hover').hover(function() {
      $('.cms-model-banner-overlay').addClass('.cms-model-banner-overlay-active');
    }, function() {
      $('.cms-model-banner-overlay').removeClass('.cms-model-banner-overlay-active');
    });
  });
})(jQuery);
Run Code Online (Sandbox Code Playgroud)