`
hot88zh
  • 浏览: 182825 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

让Jquery和其它javascript框架共存

阅读更多

GENERAL

The jQuery library, and virtually all of its plugins are constrained within the jQuery namespace. As a general rule, "global" objects are stored inside the jQuery namespace as well, so you shouldn't get a clash between jQuery and any other library (like Prototype, MooTools, or YUI).

That said, there is one caveat: By default, jQuery uses "$" as a shortcut for "jQuery"

OVERRIDING THE $-FUNCTION

However, you can override that default by calling jQuery.noConflict() at any point after jQuery and the other library have both loaded. For example:

 <html>
 <head>
   <script src="prototype.js"></script>
   <script src="jquery.js"></script>
   <script>
     jQuery.noConflict();
     
     // Use jQuery via jQuery(...)
     jQuery(document).ready(function(){
       jQuery("div").hide();
     });
     
     // Use Prototype with $(...), etc.
     $('someid').hide();
   </script>
 </head>
 <body></body>
 </html>

This will revert $ back to its original library. You'll still be able to use "jQuery" in the rest of your application.

Additionally, there's another option. If you want to make sure that jQuery won't conflict with another library - but you want the benefit of a short name, you could do something like this:

 <html>
 <head>
   <script src="prototype.js"></script>
   <script src="jquery.js"></script>
   <script>
     var $j = jQuery.noConflict();
     
     // Use jQuery via $j(...)
     $j(document).ready(function(){
       $j("div").hide();
     });
     
     // Use Prototype with $(...), etc.
     $('someid').hide();
   </script>
 </head>
 <body></body>
 </html>

You can define your own alternate names (e.g. jq, $J, awesomeQuery - anything you want).

Finally, if you don't want to define another alternative to the jQuery name (you really like to use $ and don't care about using another library's $ method), then there's still another solution for you. This is most frequently used in the case where you still want the benefits of really short jQuery code, but don't want to cause conflicts with other libraries.

 <html>
 <head>
   <script src="prototype.js"></script>
   <script src="jquery.js"></script>
   <script>
     jQuery.noConflict();
     
     // Put all your code in your document ready area
     jQuery(document).ready(function($){
       // Do jQuery stuff using $
       $("div").hide();
     });
     
     // Use Prototype with $(...), etc.
     $('someid').hide();
   </script>
 </head>
 <body></body>
 </html>

This is probably the ideal solution for most of your code, considering that there'll be less code that you'll have to change, in order to achieve complete compatibility.

Also see: [http://docs.jquery.com/Plugins/Authoring#Custom_Alias_in_plugin_code Custom Aliashttp://showercurtainrodsrings.com

INCLUDING JQUERY BEFORE OTHER LIBRARIES

If you include jQuery before other libraries, you may use "jQuery" when you do some work with jQuery, and the "$" is also the shortcut for the other library. There is no need for overriding the $-function by calling "jQuery.noConflict()".

 <html>
 <head>
   <script src="jquery.js"></script>
   <script src="prototype.js"></script>
   <script>
     // Use jQuery via jQuery(...)
     jQuery(document).ready(function(){
       jQuery("div").hide();
     });
     
     // Use Prototype with $(...), etc.
     $('someid').hide();
   </script>
 </head>
 <body></body>
 </html>

REFERENCING MAGIC - SHORTCUTS FOR JQUERY

If you don't like typing the full "jQuery" all the time, there are some alternative shortcuts:

  • Reassign jQuery to another shortcut
    • var $j = jQuery;
    • (This might be the best approach if you wish to use different libraries)
  • Use the following technique, which allows you to use $ inside of a block of code without permanently overwriting $:
    • (function($) { /* some code that uses $ */ })(jQuery)
    • Note: If you use this technique, you will not be able to use Prototype methods inside this capsuled function that expect $ to be Prototype's $, so you're making a choice to use only jQuery in that block.
  • Use the argument to the jQuery(document).ready(function($) {})
DOM ready event:
    • jQuery(function($) { /* some code that uses $ */ });
    • Note: Again, inside that block you can't use Prototype methods.

分享到:
评论

相关推荐

    jquery 最新版框架

    - **jQuery与其他库的共存**:虽然jQuery是强大且流行,但现代Web开发可能会用到其他库或框架,如Angular、React或Vue。了解如何管理和防止命名冲突是必要的。 - **性能优化**:理解jQuery的底层工作原理,如使用 ...

    jqueryapi2.2_javascript_前端_

    jQuery与现代前端框架如React, Vue, Angular等可以很好地共存,通过jQuery处理DOM操作和动画,而其他框架负责状态管理和组件化。 总的来说,`jqueryapi2.2`压缩包中的CHM文件是前端开发者必备的工具之一,它涵盖了...

    自已写的jquery ui框架

    7. **集成与应用**:学习如何将这个框架集成到现有的Web项目中,以及如何与其他JavaScript库共存。 为了全面掌握这个框架,你需要下载压缩包,阅读提供的博客文章,分析源码,并尝试在自己的项目中应用它。这将是一...

    jQuery 权威指南(压缩版)

    《jQuery权威指南》是一部针对不同层次用户全面介绍jQuery框架的著作。jQuery是一个高效、简洁的JavaScript库,它简化了HTML文档遍历、事件处理、动画设计和Ajax交互等任务,大大提高了网页开发效率。本指南深入浅出...

    Jquery,15天学会,Ajax框架,入门Jquery

    1. **与其他库共存**:学习如何在项目中同时使用jQuery和其他JavaScript库,如AngularJS或React。 2. **NoConflict模式**:理解`.noConflict()`方法的作用,解决命名冲突问题。 ### 第15天:实战项目与复习 1. **...

    完美解决jQuery符号$与其他javascript 库、框架冲突的问题

    总的来说,通过合理使用`noConflict`方法,开发者能够有效地解决jQuery与其他JavaScript库、框架之间的符号冲突问题,保证代码的稳定性和兼容性。在实际开发中,应该根据项目的具体情况选择适合的解决策略,确保各个...

    jquery 库 javascript

    4. **与ES6/7的兼容**: 虽然现代浏览器对原生JavaScript支持越来越好,但jQuery仍能在旧浏览器中提供良好的兼容性,并与新的语法特性如Promise、箭头函数等良好共存。 总的来说,jQuery以其高效、简洁的API,极大地...

    jquery-3.5.1.rar

    此版本修复了一些已知的bug,比如修复了在某些情况下的内存泄漏问题,提高了与其他库的共存性,以及增强了在最新浏览器中的性能表现。此外,还对一些过时的功能进行了废弃,鼓励开发者使用更现代的JavaScript特性。 ...

    JQUERY验证框架学习教程.pdf

    9. **与其他库的共存**:jQuery提供了`noConflict()`方法,允许在同一个页面上使用其他JavaScript库,避免命名冲突。 10. **模块化和ES6支持**:随着ES6模块的普及,jQuery也提供了模块化版本(如`import $ from '...

    jQuery电子书教会你如何使用jQuery

    最后,了解jQuery与其他库的兼容性,以及如何与新的前端框架如React、Vue、Angular等共存,是现代Web开发的重要技能。书中将给出实用的解决方案,帮助你在多技术栈的项目中游刃有余。 总的来说,这套电子书将带你从...

    jquery-3.2.1包

    jQuery设计时考虑到了与其他库的共存,通过`$.noConflict()`方法可以避免命名冲突,与AngularJS、React等现代前端框架也能良好配合。 7. **学习和应用**: 对于初学者,可以通过官方文档、在线教程和实战项目来...

    jquery 弹出层,点击链接弹出,不支持框架

    4. **重构代码**:如果greybox的不兼容性是由于框架的使用导致,考虑重新设计页面结构,使得弹出层和框架能共存,或者避免在该特定场景下使用框架。 总的来说,jQuery弹出层是一个强大且灵活的工具,用于提升用户...

    jQuery源码+中文详细注解

    当用户使用`jQuery.noConflict()`方法时,可以恢复原来保存的`jQuery`和`$`变量,避免了与其他库的关键字冲突。 ##### 3. jQuery对象的构建 文档中的第71行至73行提到,在当前作用域内(即这个自运行的匿名函数所...

    Manning.jQuery.in.Action.Feb.2008.pdf

    8. **jQuery与其他库的共存**:讲解如何在使用jQuery的同时与其他JavaScript库(如Prototype或MooTools)和平共处,避免命名冲突和资源浪费。 9. **jQuery生态**:介绍jQuery相关的工具和资源,如jQuery UI、jQuery...

    jquery jquery帮助文档

    jQuery可以与AngularJS、React等现代框架共存,通过`noConflict()`模式,可以解决命名冲突问题,确保库间的和谐共处。 总结,jQuery作为一款强大的JavaScript库,以其简洁的API和丰富的功能深受开发者喜爱。通过...

    JRails 支持jquery-ui 1.5.1 jQuery1.6

    也支持JQuery与Prototypea共存,方法如下: 1、将jquery.js放到prototype.js后面(这个是必须的否则无论如何还是要罢工地)。 2、在jquery.js后面将$变量重命名。 方法如下: [复制此代码]CODE: ...

    easyui 1.2.6 轻量级WEB前端JavaScript框架.zip

    EasyUI 是一个基于 jQuery 的轻量级前端 JavaScript 框架,主要用于简化 HTML 页面的交互性和数据可视化。在 1.2.6 版本中,EasyUI 提供了一套完整的组件和样式,帮助开发者快速构建功能丰富的 Web 应用程序。这个...

    jquery-1.4.2.js

    jQuery设计时考虑到了与其他库的共存,通过`noConflict()`方法,可以释放 `$` 符号,避免与其他库冲突。 **总结** jQuery 1.4.2和1.6版本都是jQuery历史上的重要里程碑,它们提供的功能和服务对于前端开发者来说是...

    JQuery权威指南源代码

    - jQuery Mobile:专为移动设备设计的UI框架,提供触摸友好的交互和组件。 - jQuery UI:提供了丰富的用户界面组件,如日期选择器、对话框和拖放功能。 源代码包中可能包含了书中各个章节的示例代码,这些代码...

    jQuery Mobile Up and Running

    9. **应用集成**:讨论如何将jQuery Mobile与后端服务(如Ajax、RESTful API)集成,以及与其他前端框架(如AngularJS、React)共存。 通过这本书,你不仅可以掌握jQuery Mobile的基本用法,还能深入理解移动Web...

Global site tag (gtag.js) - Google Analytics