jQuery-Kern - noConflict() -Methode

实例

Verwenden Sie die noConflict() -Methode, um jQuery-Variable einen neuen Namen zuzuweisen:

var jq=$.noConflict();

Probieren Sie es selbst aus

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 代码