`

jQuery和Mootools冲突解决方法

阅读更多

      闲余时间,写个博客,记录一下,最近的技术问题,O(∩_∩)O哈哈~

      帮同学做一个网站,发现有人用mootools框架做了一个例子,觉的很不错,自己也尝试做一个Demo。我用mootools框架做了一个菜单,当我把这个菜单加载到其他页面的时候就会出现错误,独立的时候就没错,这个为什么呢,纠结我许久。最后发现原来是mootools 和jquery类库发生冲突啊,怎么可能会这个呢,但是实际就是这个的呀;一查看到一篇文章,最后就解决了这个问题,也就有了这篇日记了。酷

      对于jQuery来说我们可以使用

var jq=jQuery.noConflict();
//这个在你少量简单的代码可以用这个方法

 这段代码将jQuery中的$全部转换为jq,但是这种方法使原有代码中需要修改的地方很多的话。

并且很多JS使用该方法后会出现一些问题,导致无法正常运行。
这个问题实质上是JS的命名空间问题,在所有基于jQuery的js中,我们在代码开头加上

(function($){ //在这里写你的代码吧
})(jQuery);

 这样之后你不需要修改任何原有的代码,能够保证该JS能够正常运行。

同时Mootools不会受到干扰,因为现在原有的代码已经被限定在这个匿名函数中了。

(function($){})(jQuery);

 这个写法主要的作用是保证jQuery不与其他类库或变量有冲突。

首先是要保证jQuery这个变量名与外部没有冲突(jQuery内部$与jQuery是同一个东西,有两个名字的原因就是怕$与其他变量名有冲突,jQuery与其他变量冲突的几率非常小)并传入匿名对象,匿名对象给参数起名叫做$(其实和jQuery内部是一样的)。
最后你就可以自由的在(function($){})(jQuery);里写你的JS而不需要考虑与外界变量是否存在冲突。

ok,我也修改成功了。简单吧?顺便把我修改的代码贴出来吧

<link href="@Url.Content("~/CSS/Photo1.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/JS/Photo/jquery.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/JS/Photo/jquery.nivo.slider.js")" type="text/javascript"></script>
<div class="featured_slider">
    <div id="featured_slider_bg" class="featured_slider_pattern">
        <div id="slider-wrapper">
            <div id="slider" class="nivoSlider">
                <a href="#" title="Featured Slide" target="_blank">
                    <img src="images/1.jpg" alt="" title="介绍内容" />
                </a><a href="#" title="Slide With Caption" target="_blank">
                    <img src="images/2.jpg" alt="" title="介绍内容 " />
                </a><a href="#" title="Aenean sagittis aliquam leo ut aliquet" target="_blank">
                    <img src="images/3.jpg" alt="" title="介绍内容" />
                </a><a href="#" title="Lorem Ipsum" target="_blank">
                    <img src="images/4.jpg" alt="" title="介绍内容" />
                </a>
            </div>
            <div class="slider_border">
            </div>
        </div>
    </div>
</div>
<script type="text/javascript">
    jQuery.noConflict(); //释放jquery中$定义,并直接使用jQuery代替平时的$
    (function ($) {
        $(window).load(function () {
            $('#slider').nivoSlider({
                controlNav: false,
                effect: 'random', //Specify sets like: 'fold,fade,sliceDown'
                animSpeed: 500, //Slide transition speed
                captionOpacity: 0.9,
                directionNav: true, //Next &amp; Prev
                controlNav: true, // 1,2,3... navigation
                pauseTime: 3000, // How long each slide will show
                directionNavHide: true,
                pauseOnHover: true //Stop animation while hovering
            });
        });
    })(jQuery);
    // $('someid').style.display = 'none';  //原mootools中的$照旧使用
</script>

 

分享到:
评论

相关推荐

    解决其他js和jquery冲突方法

    解决其他js和jquery冲突方法 JS和jQuery是两个非常常用的JavaScript库,但是当它们一起使用时,可能会出现冲突。解决这种冲突的方法是使用noConflict()方法将变量$的控制权让渡给其他库。 在开发过程中,可能还会...

    jquery与js函数冲突的两种解决方法.docx

    在JavaScript的开发环境中,尤其是当使用多个库或框架时,比如jQuery和其他JavaScript库(如Prototype、MooTools等),可能会遇到函数名或选择器符号`$`的冲突问题。这是因为这些库都倾向于使用`$`作为主要的函数或...

    ecshop解决jquery冲突js

    然而,在实际应用中,由于各种第三方插件和库的引入,可能会出现JavaScript库之间的冲突,尤其是当JQuery与其他使用$符号作为主要作用域的库(如Prototype或MooTools)同时存在时。标题中的"ecshop解决jquery冲突js...

    jQuery 美元符冲突的解决方法

    然而,当使用jQuery与其他JavaScript库(如 Prototype、MooTools 等)时,可能会遇到“美元符冲突”问题,因为这些库中也可能使用了`$`作为主要的函数调用符号。本文将深入探讨如何解决jQuery中的美元符冲突。 ### ...

    jQuery多个版本和其他js库冲突的解决方法

    为了解决这个问题,jQuery提供了一个叫做`noConflict()`的方法,用于释放`$`符号的控制权,避免冲突。 1. 同一页面上多个jQuery版本的冲突解决: 在HTML文件中,你可以按照引入不同版本jQuery的顺序,通过`...

    MooTools1.4中文PDF手册+MooTools-Core-1.5.1.js

    MooTools是一款强大的...通过阅读"Mootools1.4中文PDF手册",开发者可以深入了解MooTools的使用方法和最佳实践,而"MooTools-Core-1.5.1.js"则是实际项目中的运行库,结合手册学习,可以迅速提升JavaScript开发技能。

    (jQuery,mootools,dojo)使用适合自己的编程别名命名

    jQuery是一个非常流行的JavaScript库,它提供了一套简洁的方法来进行DOM操作和AJAX调用等。在使用jQuery时,一个常见的做法是使用美元符号($)作为jQuery对象的别名。这种做法主要是为了在编写代码时简化jQuery...

    漂亮的斑马纹table表格(基于JQuery斑马纹表格)

    一个简单的斑马纹表格,通过IE6/7/8、firefox、opera等浏览器测试。如果页面上有大量的表格数据时,隔行变色的...提示, jquery 与mootools存在一定的冲突,jquery与mootools混合的环境未测试过,不一定保证可正常使用

    如何解决jQuery 和其他JS库的冲突

    当我们需要在同一个网页项目中使用jQuery和其他JavaScript库时,经常会出现JavaScript库之间的冲突问题。这种冲突主要表现在库中定义的全局变量、函数或对象上。特别是一些流行的JavaScript库,例如Prototype.js、...

    mootools1.2 core

    - **与jQuery**:MooTools和jQuery都是流行的JavaScript库,但MooTools更注重面向对象编程,而jQuery更倾向于实用性和易用性。 - **与Prototype**:MooTools和Prototype都有类似的功能,但在设计哲学和API上有差异...

    WEB开发 之 jQuery - noConflict() 方法.docx

    总的来说,`noConflict()`是jQuery提供的一种解决库之间符号冲突的机制,它允许开发者在多框架环境中灵活地管理和使用jQuery。通过合理使用`noConflict()`,我们可以确保各种JavaScript库在同一个页面上和谐共存,...

    jQuery$命名冲突怎么办如何解决

    总的来说,解决jQuery和其他框架的`$`命名冲突主要有三个步骤:识别冲突、隔离作用域(通过`noConflict()`或闭包)以及使用`jQuery`代替`$`。根据你的项目需求和代码结构,选择最适合的方式来避免冲突,确保各个库和...

    Mootools多选插件

    4. **JavaScript代码**:`JS`目录可能包含了插件的核心JavaScript文件,其中包含了实现多选功能的关键逻辑和方法。 5. **插件集合**:`Plugins`可能包含其他与多选功能相关的辅助插件或扩展,这些插件可以增强主插件...

    jquery与js函数冲突的两种解决方法

    以上两种方法都可以有效解决在多JavaScript库环境中使用jQuery时出现的$()函数冲突问题,开发者可以根据实际情况选择适合的解决方式。需要特别注意的是,在多库环境中,最好不要使用$()作为参数传递,而应该使用完整...

    mootools和prototype的开发文档

    MooTools的`Element`类是DOM操作的核心,提供了丰富的静态和实例方法。它还引入了事件处理机制,如`addEvent`和`removeEvent`,支持DOM0级和DOM2级事件。 #### 2.4 AJAX与动画 MooTools的`Request`类处理AJAX请求...

    mootools 1.2 中文教程

    通过使用类、对象和命名空间,可以有效地组织和隔离代码,避免命名冲突。 - `Core`:基础模块,包括基本的数据类型、函数扩展和DOM操作。 - `More`:可选扩展模块,包含额外的功能,如动画、效果、事件处理等。 2...

    jQuery中 $ 符号的冲突问题及解决方案

    解决`$`符号冲突的首要方法是使用jQuery提供的`$.noConflict()`函数。这个函数的作用是释放`$`变量,将其控制权交还给之前占用它的库。例如,如果我们有`jquery-1.11.0.js`和`jquery-1.5.0.js`两个版本的jQuery,...

    mootools 教程

    这个文件是MooTools的核心非压缩版本,"NC"代表"No Conflict",意味着它与其它JavaScript库(如jQuery)可以更好地共存,避免命名冲突。核心库包含了MooTools的基本组件,如类系统、事件处理、DOM操作等。开发者可以...

Global site tag (gtag.js) - Google Analytics