Heim > Web-Frontend > js-Tutorial > So lösen Sie Konflikte zwischen jQuery und anderen Bibliotheken

So lösen Sie Konflikte zwischen jQuery und anderen Bibliotheken

零到壹度
Freigeben: 2018-03-24 13:28:28
Original
1402 Leute haben es durchsucht

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

(1) Verwenden Sie den vollständigen Namen „jQuery“ anstelle von „$“

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 = &#39;none&#39;;          //使用prototype隐藏元素
</script>
Nach dem Login kopieren

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 = &#39;none&#39;;      //使用prototype.js隐藏元素
Nach dem Login kopieren

(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 = &#39;none&#39;;      //使用prototype
Nach dem Login kopieren

Der andere:

jQuery.noConflict();                      //将变量$的控制权让渡给prototype.js
(function($){                             //定义匿名函数并设置形参为$
    $(function(){                         //匿名函数内部的$均为jQuery
        $("p").click(function(){          //继续使用 $ 方法
            alert( $(this).text() );
        });
    });
})(jQuery);                               //执行匿名函数且传递实参jQuery
$("pp").style.display = &#39;none&#39;;           //使用prototype
Nach dem Login kopieren

Dies ist der idealste Weg, der durch Ändern des erreicht werden kann Mindestens Code für volle Kompatibilität.

2. Die jQuery-Bibliothek wird vor anderen Bibliotheken importiert

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 = &#39;none&#39;;        //使用prototype
</script>
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage