jQuery - kaedah noConflict().
jQuery menggunakan simbol $ sebagai singkatan untuk jQuery.
Bagaimana jika rangka kerja JavaScript lain turut menggunakan simbol $ sebagai trengkas?
Beberapa rangka kerja JavaScript lain termasuk: MooTools, Backbone, Sammy, Cappuccino, Kalah Mati, JavaScript MVC, Google Web Toolkit, Google Closure, Ember, Batman dan Ext JS.
Sesetengah rangka kerja ini juga menggunakan simbol $ sebagai trengkas (sama seperti jQuery Jika anda menggunakan dua rangka kerja berbeza yang menggunakan simbol trengkas yang sama, ia mungkin menyebabkan skrip berhenti berjalan).
Pasukan jQuery mengambil kira isu ini dan melaksanakan kaedah noConflict().
Peranan noConflict()
noConflict() wujud untuk satu tujuan sahaja: ia membenarkan anda memuatkan berbilang kejadian jQuery pada halaman yang sama, terutamanya Versi jQuery yang berbeza. Anda mungkin tertanya-tanya, mengapa anda perlu memuatkan/menggunakan pelbagai versi objek jQuery yang berbeza pada satu halaman? Secara umumnya, terdapat dua situasi. Dalam kes pertama, kod perniagaan anda menggunakan versi terkini pustaka jQuery, dan pemalam pihak ketiga yang anda pilih bergantung pada versi pustaka jQuery yang lebih awal, dalam kes kedua, anda mengekalkan sistem yang sudah ada; perniagaan Atas pelbagai sebab, kod tersebut merujuk versi lama perpustakaan jQuery, dan modul anda yang baru dibangunkan menggunakan versi lain pustaka jQuery. Dalam kedua-dua kes, anda perlu menghadapi masalah konflik objek/kaedah jQuery. Nasib baik, jQuery.noConflict() membantu anda menyelesaikan masalah ini.
Kaedah jQuery noConflict() Kaedah
noConflict() melepaskan kawalan pengecam $ supaya skrip lain boleh menggunakannya.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <script> $.noConflict(); jQuery(document).ready(function(){ jQuery("button").click(function(){ jQuery("p").text("jQuery在工作!"); }); }); </script> </head> <body> <p>看我的变化</p> <button>点我</button> </body> </html>
Gunakan jQuery dengan menggantikan singkatan dengan nama penuh.
Anda boleh mencipta singkatan anda sendiri:
var jq = $.noConflict(); jq(document).ready(function(){ jq("button").click(function(){ jq("p").text("jQuery 仍然在工作!"); }); });
Jika blok kod jQuery anda menggunakan $ shorthand dan anda tidak mahu menukar pintasan ini, anda boleh menghantar simbol $ sebagai pembolehubah kepada kaedah sedia. Dengan cara ini anda boleh menggunakan simbol $ di dalam fungsi - tetapi di luar fungsi, anda masih perlu menggunakan "jQuery":
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <script> $.noConflict(); jQuery(document).ready(function($){ $("button").click(function(){ $("p").text("这是覆盖的文字"); }); }); </script> </head> <body> <p>这是一段文字</p> <button>点击显示</button> </body> </html>