jQuery-Kern - noConflict() -Methode
实例
Verwenden Sie die noConflict() -Methode, um jQuery-Variable einen neuen Namen zuzuweisen:
var jq=$.noConflict();
Definition und Verwendung
Die noConflict() -Methode übergibt die Kontrolle über die Variable $ an jQuery.
Dieses Verfahren gibt die Kontrolle über das $-Variable von jQuery frei.
Das Verfahren kann auch verwendet werden, um jQuery-Variable einen neuen benutzerdefinierten Namen zuzuweisen.
Tipp:Das Verfahren ist nützlich, wenn andere JavaScript-Bibliotheken $ für ihre Funktionen verwenden.
Syntax
jQuery.noConflict(removeAll)
Parameter | Beschreibung |
---|---|
removeAll | Boolescher Wert. Zeigt an, ob die vollständige Rückgabe der jQuery-Variable erlaubt ist. |
Erklärung
Viele JavaScript-Bibliotheken verwenden $ als Funktions- oder Variablenname, jQuery ebenfalls. In jQuery ist $ nur ein Alias für jQuery, daher kann die Funktionalität auch ohne $ gewährleistet sein. Wenn wir eine andere JavaScript-Bibliothek als jQuery verwenden müssen, können wir durch Aufruf von $.noConflict() die Kontrolle an diese Bibliothek zurückgeben:
<script type="text/javascript" src="other_lib.js"></script> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $.noConflict(); // Code für das $ der anderen Bibliothek verwenden </script>
Dies kann mit der .ready() -Methode kombiniert werden, um Aliase für jQuery-Objekte zu erstellen, eine sehr effektive Technik:
<script type="text/javascript" src="other_lib.js"></script> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $.noConflict(); jQuery(document).ready(function($) { // Code für das jQuery $ verwenden }); // Code für das $ der anderen Bibliothek verwenden </script>
Darüber hinaus können wir die Kontrolle über $ und jQuery an die ursprüngliche Bibliothek zurückgeben, indem wir dem Verfahren den Parameter true übergeben. Überlegen Sie sich vorher gut nach!
这是相对于简单的 noConflict 方法更极端的版本,因为这将完全重新定义 jQuery。这通常用于一种极端的情况,比如你想要将 jQuery 嵌入一个高度冲突的环境。注意:调用此方法后极有可能导致插件失效。
实例
例子 1
将 $ 引用的对象映射回原始的对象:
jQuery.noConflict(); jQuery("div p").hide(); // 使用 jQuery $("content").style.display = "none"; // 使用其他库的 $()
例子 2
恢复使用别名 $,然后创建并执行一个函数,在这个函数的作用域中仍然将 $ 作为 jQuery 的别名来使用。在这个函数中,原来的 $ 对象是无效的。这个函数对于大多数不依赖于其他库的插件都十分有效:
jQuery.noConflict(); (function($) { $(function() { // 使用 $ 作为 jQuery 别名的代码 }); })(jQuery); ... // 其他用 $ 作为别名的库的代码
例子 3
可以将 jQuery.noConflict() 与简写的 ready 结合,使代码更紧凑:
jQuery.noConflict()(function(){ // 使用 jQuery 的代码 }); ... // 其他库使用 $ 做别名的代码
例子 4
创建一个新的别名用以在接下来的库中使用 jQuery 对象:
var j = jQuery.noConflict(); j("div p").hide(); // 基于 jQuery 的代码 $("content").style.display = "none"; // 基于其他库的 $() 代码
例子 5
完全将 jQuery 移动到一个新的命名空间:
var dom = {}; dom.query = jQuery.noConflict(true);
结果:
dom.query("div p").hide(); // 新 jQuery 的代码 $("content").style.display = "none"; // 另一个库 $() 的代码 jQuery("div > p").hide(); // 另一个版本的 jQuery 代码