- 浏览: 416270 次
- 性别:
- 来自: 济南
最新评论
-
nianshi:
slideDown就是show的滑动效果版本, slideUp ...
Jquery零碎代码收藏 -
nianshi:
以后编写JS代码,少写<div onclick=&quo ...
Jquery零碎代码收藏 -
nianshi:
获取匹配元素相对父元素的偏移var p = $("p ...
Jquery零碎代码收藏 -
nianshi:
获取匹配元素在当前窗口的相对偏移var p = $(" ...
Jquery零碎代码收藏 -
wuchu:
谢谢
Flex 读取XML配置文件总结
在web项目开发中,经常需要引用第三方js库,如果第三方js库与自已的一个js库使用相同的全局变量,是一个比较麻烦的事.程序员多半可能会修改其中一方的js代码.能不能有一个比较好的方法解决呢?让我们看一下jquery如何做到的.
jquery 多库共存机制指 jquery 库完全兼容第三方库, 例如jquery中使用 $ 做为函数入口,在该页面同时引入另一个库,其中也使用了 $ 做为函数名。因此jQuery与该库发生冲突
例1:
< HTML >
< HEAD >
< TITLE > New Document </ TITLE >
< script src = "http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js" language = "javascript" ></ script >
< SCRIPT LANGUAGE ="JavaScript" >
<!--
// 第三方库
function $(str)
{
return document.getElementById(str) ;
}
function jQuery(str)
{
return document.getElementById(str) ;
}
// -->
</ SCRIPT >
</ HEAD >
< BODY >
< input type = "text" id = "txt1" value = "aa" />
</ BODY >
</ HTML >
在如上示例中 第三方库同时使用了"$"与"jQuery",此时jquery入口被第三方库覆盖了. jquery 提供了noConflict函数解决冲突.
例2:
< HTML >
< HEAD >
< TITLE > New Document </ TITLE >
< script src = "http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js" language = "javascript" ></ script >
< script >
// 兼容代码
var $ 1 = $.noConflict();
$ 1 (document).ready( function (){
alert($ 1 ( " #txt1 " ).val())
alert($( " txt1 " ).value) ;
})
</ script >
< SCRIPT LANGUAGE ="JavaScript" >
<!--
// 第三方库
function $(str)
{
return document.getElementById(str) ;
}
function jQuery(str)
{
return document.getElementById(str) ;
}
// -->
</ SCRIPT >
</ HEAD >
< BODY >
< input type = "text" id = "txt1" value = "aa" />
</ BODY >
</ HTML >
noConflict重新将jquery 入口指针指向 $1,此时可以用$1访问jquery库,其中兼容代码要写在第三方库载入之前(如果写在之后,jquery 的 $和jQuery 入口被第三方库覆盖了,无法调用兼容代码).
在实际应用中,如果jquery载入位置在第三方库之后,jquery会覆盖第三方js库么? 如下代码.
例3:
< HTML >
< HEAD >
< TITLE > New Document </ TITLE >
< SCRIPT LANGUAGE ="JavaScript" >
<!--
// 第三方库
function $(str)
{
return document.getElementById(str) ;
}
function jQuery(str)
{
return document.getElementById(str) ;
}
// -->
</ SCRIPT >
< script src = "http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js" language = "javascript" ></ script >
</ HEAD >
< BODY >
< input type = "text" id = "txt1" value = "aa" />
</ BODY >
</ HTML >
此处jquery 加载完毕已经将第三方库覆盖了.如果想调用第三方库,似乎有点困难. 当然jquery 已经提供了解决方法
例4:
< HTML >
< HEAD >
< TITLE > New Document </ TITLE >
< SCRIPT LANGUAGE ="JavaScript" >
<!--
// 第三方库
function $(str)
{
return document.getElementById(str) ;
}
function jQuery(str)
{
return document.getElementById(str) ;
}
// -->
</ SCRIPT >
< script src = "http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js" language = "javascript" ></ script >
< script >
// 兼容代码
var $ 1 = $.noConflict();
$ 1 (document).ready( function (){
alert($ 1 ( " #txt1 " ).val())
alert($( " txt1 " ).value) ;
})
</ script >
</ HEAD >
< BODY >
< input type = "text" id = "txt1" value = "aa" />
</ BODY >
</ HTML >
例4中同样在jquery载入之后调用"兼容代码",和例2兼容代码相同,但意义上有差别.在例2中第三方库覆盖了jquery,其中兼容代码 的作用在第三方库覆盖jquery前,jquery 入口指针赋给"$1".在例4中与上相反,由于jquery库在载入完成时,已经将第三方库覆盖了,此时"$"指向jquery库,兼容代码作用是 将"$"重新指向第三方库.同时充许重新定义jquery入口.
jquery 兼容机制实现原理:
(示例代码以jquery-1.4.3为例 )
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
//394-402行
noConflict: function( deep ) {
window.$ = _$;
if ( deep ) {
window.jQuery = _jQuery;
}
return jQuery;
},
其中29-32行,jquery执行前,将window.$,window.jQuery值保存到_$和_jQuery中(此时函数指针"jQuery","$"可能指向第三方库,此处为兼容处理做准备).
394-402 行将_jQuery和_$重新赋给window.$,window.jQuery,同时返回jquery函数指针. 不难看出调用noConflict函数后,被jquery"占用"的$与"jQuery"又交还给第三方库了.
发表评论
-
encodeURI和encodeURIComponent
2011-12-02 14:00 1355encodeURI和encodeURIComponent ... -
Javascript获取url里面的一些东西
2011-11-01 14:25 925属性 描述 hash 设置或 ... -
不错的JS特效代码
2011-10-31 14:06 801http://js.fgm.cc/learn/ -
你可能不知道的10个JavaScript小技巧
2011-10-31 09:34 716尽管我使用 Javascript来 ... -
jquery选择器摘要
2011-05-25 12:10 958jquery ... -
纯CSS实现两列等高
2011-01-19 17:17 1148<!DOCTYPE html PUBLIC " ... -
Jquery AutoComplete实例
2011-01-14 17:11 2005<!DOCTYPE html PUBLIC " ... -
Jquery AutoComplete自动完成 的使用方法实例
2011-01-14 17:02 1479Jquery AutoComplete自动完成 ... -
JS完美拖拽+拖动改变Div的宽高+关闭按钮
2010-12-31 11:14 2255完美拖拽+拖动改变Div的宽高+关闭按钮 -
Javascript捕获鼠标位置(跨浏览器)
2010-12-31 10:59 1803Html代码 Javascript ... -
Javascript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)
2010-11-29 11:25 8891 判断select选项中 是否存在Val ... -
javascript获取各种浏览器可见窗口大小
2010-11-29 09:12 968Js代码 function g ... -
js 获取html 控件坐标
2010-11-22 11:29 3456假设 obj 为某个 HTML 控件。 ... -
img Scroll滚动
2010-11-22 09:11 3838js代码 var $ = function ... -
img SetTimeOut渐现
2010-11-22 09:09 964JS代码: < script lang ... -
js获取页面宽度高度及屏幕分辨率
2010-11-18 15:04 2778网页可见区域宽:document.body.clientWid ... -
Iframe框架高度自适应的实现
2010-11-16 15:21 1238解决iframe框架页面自适应高度问题代码如下,需要注意 ... -
实现iFrame自适应高度,原来很简单!
2010-11-16 15:20 1201实现iFrame自适应高度,原来很简单! 2010-10 ... -
js弹出div对话框(1,透明,2带拖动功能)
2010-11-16 15:19 3187(很好用的)js弹出div对话框(1,透明,2带拖动功能 ... -
JS弹出DIV对话框透明遮罩效果,挺不错
2010-11-16 15:17 1604<!DOCTYPE html PUBLIC & ...
相关推荐
jQuery 3.1 参考手册 jQuery 核心函数 jQuery([sel,[context]]) jQuery(html,[ownerDoc])1.8* jQuery(callback) jQuery.holdReady(hold) jQuery 对象访问 ...多库共存 jQuery.noConflict([ex])
jQuery 3.1 标准课程第三章 核心方法插件及多库共存方法的使用
在开发过程中,可能还会使用到其他的JS库,比如Prototype,但多库共存时可能会发生冲突。解决这种冲突的方法有多种,以下是其中的一些: 一、 jQuery 库在其他库之前导入,直接使用 jQuery(callback)方法。这是因为...
核心 jQuery 核心函数 ...多库共存 jQuery.noConflict([ex]) 属性 属性 attr(name) attr(properties) attr(key, value) attr(key, fn) removeAttr(name) CSS 类 addClass(class | fn) removeClass([class |
多库共存 jQuery.noConflict([extreme]) 属性 属性 attr(name) attr(properties) attr(key, value) attr(key, fn) removeAttr(name) CSS 类 addClass(class) removeClass([class]) toggleClass(class [, ...
jQuery的基本使用、选择器、效果、样式操作、属性操作、元素操作、尺寸操作、位置操作、以及事件注册、事件处理、事件对象、拷贝对象、多库共存、部分插件的使用
9. **jQuery与其他库的兼容性**:jQuery提供了`$.noConflict()`方法来解决与其他JavaScript库的命名冲突问题,保证了多库共存的可能。 10. **移动和触屏支持**:随着移动互联网的发展,jQuery Mobile和jQuery Touch...
多库共存是一个实际开发中常见的情况,jQuery通过$.noConflict()方法可以释放$符号,允许与其他库如 Prototype 共存。 在第二章,我们关注jQuery的核心机制。"无new构建"意味着可以通过不使用new关键字创建jQuery...
在JQuery源码中,还特别考虑了多库共存的情况,通过保存和恢复关键字的方式,防止了与其它库产生命名冲突,这体现了JQuery设计的灵活性和周到性。 此外,JQuery通过一系列的函数封装来创建jQuery对象,实际上就是...
**jQuery基本语法详解** jQuery是一个高效、简洁的JavaScript库,它极大地简化了DOM操作、事件处理、动画设计和...在实际项目中,合理利用jQuery的插件机制和多库共存策略,可以灵活地与其他JavaScript库结合使用。
多库共存 jQuery.noConflict([ex]) 属性 属性 attr(name|pro|key,val|fn) removeAttr(name) prop(name|pro|key,val|fn)1.6+ removeProp(name)1.6+ CSS 类 addClass(class|fn) removeClass([class|fn]) ...
` 用于保存`window`对象上的`jQuery`和`$`变量,这是为了应对多库共存的情况。当用户使用`jQuery.noConflict()`方法时,可以恢复原来保存的`jQuery`和`$`变量,避免了与其他库的关键字冲突。 ##### 3. jQuery对象的...
多库共存 jQuery.noConflict([ex]) HTML 5 标准属性 Previous Page Next Page HTML 标签拥有属性。您可以在每个标签的参考页中找到相应的特殊属性。这里列出的属性是通用于每个标签的核心属性和语言属性(有个别例外...
**多库共存** - `jQuery.noConflict()`:释放jQuery的$别名,以允许与其他库一起使用。 - `jQuery.noConflict(extreme)`:更彻底地释放jQuery的命名空间。 **选择器** jQuery提供了多种选择器,包括基本选择器...
7. **第七章**:讨论了jQuery与其他JavaScript库的共存问题,以及如何在多库环境中有效使用jQuery。 8. **第八章**:涵盖了高级话题,包括性能优化策略、jQuery的最佳实践,以及如何调试jQuery代码,确保代码的高效...
紧接着,在第56至68行,文档展示了如何处理多库共存的情况。具体做法是: 1. **保存原有的`jQuery`和`$`引用**:通过`var _jQuery = window.jQuery, _$ = window.$;`,将当前窗口中的`jQuery`和`$`变量保存到新的...
6. **多库共存**: - `.noConflict([ex])`:释放jQuery的`$`符号,以便与其他库兼容。 7. **属性操作**: - `.attr(name)`:获取属性值。 - `.attr(properties)`:批量设置属性。 - `.attr(key, value)`:设置...
多库共存 jQuery.noConflict([extreme]) 属性 属性 attr(name) attr(properties) attr(key, value) attr(key, fn) removeAttr(name) CSS 类 addClass(class) removeClass([class]) toggleClass(class [, ...
多库共存 jQuery.noConflict([ex]) 属性 属性 attr(name|pro|key,val|fn) removeAttr(name) prop(n|p|k,v|f) removeProp(name) CSS 类 addClass(class|fn) removeClass([class|fn]) toggleClass(class|...