In der jQuery-Bibliothek sind fast alle Plugins auf ihren Namensraum beschränkt. Im Allgemeinen werden globale Objekte gut im jQuery-Namespace gespeichert, sodass es bei der Verwendung der jQuery-Bibliothek mit anderen js-Bibliotheken (Prototype, MooTools oder YUI) keine Konflikte gibt.
Hinweis: Standardmäßig verwendet jQuery „$“ als eigene Verknüpfung.
Wenn andere von uns verwendete JavaScript-Bibliotheken auch „$“ als Abkürzung verwenden, wie kann der Konflikt zwischen jQuery und anderen Bibliotheken zu diesem Zeitpunkt gelöst werden?
1. jQuery-Bibliothek nach anderen Bibliotheken importieren
Nachdem andere Bibliotheken und die jQuery-Bibliothek geladen wurden, kann jederzeit die Funktion jQuery.noConflict() aufgerufen werden, um die Kontrolle über die Variable $ an andere JavaScript-Bibliotheken zu übergeben.
Beispiel:
//...省略其他代码 <p id="pp">Text-prototype(将被隐藏)</p> <p>Text-jQuery(将被绑定单击事件)</p> <!-- 引入prototype --> <script src="lib/prototype.js" type="text/javascript"></script> <!-- 引入jQuery --> <script src="../../scripts/jquery.js" type="text/javascript"></script> <script> jQuery.noConflict(); //将变量$的控制权让渡给prototype.js jQuery(function(){ //使用jQuery jQuery("p").click(function(){ alert( jQuery(this).text() ); }) }) $("pp").style.display = 'none'; //使用prototype隐藏元素 </script>
Dann können Sie die jQuery()-Funktion als jQuery-Objektherstellungsfabrik im Programm verwenden.
(2) Benutzerdefinierte Verknüpfung
Alternative Namen können angepasst werden, z. B. jq, $j usw. Beispiel:
var $j = jQuery.noConflict(); //自定义一个快捷方式 $j(function(){ //使用jQuery,利用自定义快捷方式——$j $j("p").click(function(){ alert( $j(this).text() ); }) }) $("pp").style.display = 'none'; //使用prototype.js隐藏元素
(3) Verwenden Sie $, ohne dass es zu Konflikten mit anderen Bibliotheken kommt
Wenn Sie diese alternativen Namen für jQuery nicht anpassen möchten, Sie möchten immer noch verwenden $ Unabhängig von der $()-Methode anderer Bibliotheken und gleichzeitig nicht mit anderen Bibliotheken in Konflikt geraten möchten, können Sie die folgenden zwei Lösungen verwenden.
Einer:
jQuery.noConflict(); //将变量$的控制权让渡给prototype.js jQuery(function($){ //使用jQuery设定页面加载时执行的函数 $("p").click(function(){ //在函数内部继续使用 $()方法 alert( $(this).text() ); }) }) $("pp").style.display = 'none'; //使用prototype
Der andere:
jQuery.noConflict(); //将变量$的控制权让渡给prototype.js (function($){ //定义匿名函数并设置形参为$ $(function(){ //匿名函数内部的$均为jQuery $("p").click(function(){ //继续使用 $ 方法 alert( $(this).text() ); }); }); })(jQuery); //执行匿名函数且传递实参jQuery $("pp").style.display = 'none'; //使用prototype
Dies ist der idealste Weg, der durch Ändern des erreicht werden kann Mindestens Code für volle Kompatibilität.
Wenn die jQuery-Bibliothek vor anderen Bibliotheken importiert wird, gehört die Steuerung von $() standardmäßig zur später importierten JavaScript-Bibliothek. Sie können „jQuery“ direkt verwenden, um einige Arbeiten zu erledigen. Gleichzeitig können Sie die Methode $() als Verknüpfung zu anderen Bibliotheken verwenden. Es ist hier nicht erforderlich, die Funktion jQuery.noConflict() aufzurufen. Beispiel:
<!-- 先导入jQuery --> <script src="../../scripts/jquery.js" type="text/javascript"></script> <!-- 后导入prototype --> <script src="lib/prototype.js" type="text/javascript"></script> <p id="pp">Test-prototype(将被隐藏)</p> <p >Test-jQuery(将被绑定单击事件)</p> <script> jQuery(function(){ //直接使用 jQuery ,无需调用"jQuery.noConflict()"函数 jQuery("p").click(function(){ alert( jQuery(this).text() ); }); }); $("pp").style.display = 'none'; //使用prototype </script>
Das obige ist der detaillierte Inhalt vonSo lösen Sie Konflikte zwischen jQuery und anderen Bibliotheken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!