30-讨论
3.7.3 讨论
jQuery程序库及其所有插件都受到jQuery命名空间的约束。不应该与jQuery程序库和其他任何程序库(也就是Prototype、YUI等)冲突。而jQuery使用 $ 作为jQuery对象的快捷方式,这个快捷方式定义与其他也使用 $ 变量的程序库冲突。正如我们在这个解决方案中所看到的,可以释放jQuery的 $ 快捷方式,回到jQuery对象上。
还有另一种选项。如果你希望确保jQuery不与另一个程序库冲突,而且仍然有简短名称的好处,可以调用 jQuery.noConflict() 并将其复制给一个变量:
var j = jQuery.noConflict();
j(document).ready(function(){
j("div#jQuery").css("font-weight","bold");
});
可以选择 jQuery.noConflict() 赋值的变量名,定义自己的简写名称。
最后一种选择是在闭包中封装jQuery代码:
jQuery.noConflict();
(function($){
$("div#jQuery").css("font-weight","bold");
})(jQuery);
通过闭包的使用,在函数中运行时,暂时使 $ 变量可用于jQuery对象。一旦函数结束, $ 变量将归还给最早具有控制权的程序库。
警告
如果你使用这种技术,就不能在封装函数内部使用其他程序库中需要
$的方法。