jQuery与MooTools冲突:未捕获TypeError:self.className.contains不是函数

时间:2015-06-05 16:24:09

标签: javascript jquery mootools

我有一个同时使用jQuery和MooTools的应用程序。在过去,我已经能够解决与jQuery.noConflict()的冲突,但似乎有一个特定的页面jQuery.noConflict()以一种意想不到的方式工作:特别是{{1 MooTools正在重写polyfill。

以下内容将失败,并显示以下错误:

getElementByClass

返回:

  

未捕获的TypeError:self.className.contains不是   functionSelectors.Filters.byClass @   mootools-1.2.js:2766Selectors.Utils.filter @   mootools-1.2.js:2635Selectors.Utils.search @   mootools-1.2.js:2700Native.implement.getElements @   mootools-1.2.js:2532Native.implement.getElementsByClassName @   mootools-1.2.js:9638c.querySelectorAll.k @   jquery.1.6.4.min.js:3f.fn.extend.find @   jquery.1.6.4.min.js:3e.fn.e.init @jquery.1.6.4.min.js:2e @   jquery.1.6.4.min.js:2(匿名函数)@ VM16934:6

我试图让jQuery"重新初始化"通过CDN引入脚本来达到默认值,但也失败了。

如何重置jQuery以使其以前的方法?

1 个答案:

答案 0 :(得分:0)

请不要使用mootools 1.2,它早于ES5对String.prototype.containsArray.prototype.contains的原生方法,并且大约有5-6岁。

无论哪种方式,MooTools都不会覆盖Element.prototype.getElementByClassName,无论如何都不会在现代浏览器选择器中使用 - 所以除非你支持IE6,否则这样做无济于事,嘶嘶声和光滑使用querySelectorAll

此外。 https://bugzilla.mozilla.org/show_bug.cgi?id=789036

MooTools的' String.prototype.contains打破浏览器并强制推出一系列修复程序,包括1.2.6和1.3

最后。

self.className.contains没有帮助 - 这是你自己的代码还是MooTools中的代码 - 通常,self是一个将范围保持在实例的黑客,不常见的是指向Element,将拥有className属性。你console.log(self.className)时会发生什么?