如何使用selectvizr防止mootools和jquery之间发生冲突?

时间:2017-06-14 20:13:47

标签: javascript jquery css3 mootools selectivizr

我需要能够支持Internet Explorer 6-8中的所有CSS3伪类和属性选择器。名为selectivizr的polyfill允许你这样做。它需要一个javascript库,如jquery或mootools才能工作。问题是,虽然selectivizr支持所有带有mootools的伪类和属性选择器,但是jquery中有多达11个被识别或不支持。因此,虽然我从未在生活中使用过mootools,但我不得不将其作为外部脚本添加到我的网页中,并在条件注释中选择检测网页是否已从Internet Explorer 6-8访问过。

像这样:

<!--[if (gte IE 6)&(lte IE 8)]>
  <script type="text/javascript" src="mootools-core.js"></script>
  <script type="text/javascript" src="selectivizr.js"></script>
  <noscript><link rel="stylesheet" href="[fallback css]" /></noscript>
<![endif]-->

问题在于mootools和jquery已经相互冲突。我的网页上有很多jquery。使用jQuery.noConflict()进行全部编辑实际上并不是一个选项,也不是将它全部包装在

之间
(function ($) {
    // $ is actually jQuery here
    $(document).ready(function () {

    })
}(jQuery))

另外,我不知道如果是这样,但是选择使用的多个javascript库的存在可能会导致选择器本身的功能出现问题。我认为我需要做的是在我的网页上添加一些mootools代码,以防止它与jquery发生冲突,同时确保jquery没有检测到selectivizr并且只能响应mootools。但由于我从未使用过mootools,我不知道该怎么做。有人可以帮忙吗?

P.S我没有Internet Explorer 6-8所以我无法对此进行测试,所以如果你给出答案,请小心并负责。

1 个答案:

答案 0 :(得分:1)

如果其他人已经定义了Mootools,则Mootools不会声明$。因此,如果确保在Mootools之前加载jQuery,$仍然是jQuery $

(即:将jquery <script>标记保留在<head>中,并且不要使用asyncdefer属性

这取决于selectivzr本身使用document.id而不是$ - document.id是Mootools&#39;调用&#39; Mootools $&#39;

的替代方法