it-swarm-id.com

Masalah paling umum dan belum terselesaikan saat menggunakan jquery di ekstensi J2.5

Di joomla 2.5 orang bertanya masalah pada jquery ketika ada berbagai ekstensi di halaman. Pertanyaannya adalah sebagai pengembang ekstensi bagaimana kita menggunakan jquery dalam ekstensi j2.5 ??, mengingat ekstensi lain juga mendeklarasikan file jquery dan kode tidak ada konflik jquery dan ada beberapa pengembang yang tidak peduli atau tidak tahu dan menggunakan jquery dengan caranya sendiri sehingga jquery tidak berfungsi dalam ekstensi.

Sekarang saya harus memeriksa jfactory-> getapplication-> get ('jquery') tapi itu tidak cukup seperti yang saya sebutkan di atas. Jadi di antara yang berikut ini adalah cara yang benar untuk menggunakan jquery yang mendeklarasikan file skrip jquery (seperti yang saya katakan di atas mengapa saya harus mendeklarasikan) -

  1. nc_mode = jQuery.noConflict (); nc_mode (function () {......});
  2. jQuery.noConflict (); jQuery (function () {....});
  3. Hanya menggunakan jQuery - jQuery (function () {....});

Sangat penting untuk menyelesaikannya dengan benar karena penggunaan jquery sangat umum dalam ekstensi.

1
dev-m

noConflict digunakan sehingga alias yang digunakan saat mendeklarasikan fungsi tidak berbenturan dengan pustaka lain. Joomla menggunakan Mootools (secara bertahap dihapus dari inti) yang memiliki masalah konflik besar dengan jQuery dan juga $ alias untuk mendeklarasikan fungsi seperti:

$('button').click(function() { ...

Untuk mendapatkan pemahaman yang lebih baik dan lebih mendalam tentang noConflict, baca yang berikut ini yang juga akan memberi Anda contoh penggunaan:

http://api.jquery.com/jquery.noconflict/

Adapun mengimpor jQuery dalam ekstensi, ini agak rumit. Setelah melihat komentar Anda pada jawaban saya sebelumnya, Anda sepenuhnya menyadari bahwa ada berbagai cara mengimpor jQuery. Memastikan hanya 1 instance dari itu diimpor adalah mungkin tetapi satu dapat mengalami beberapa masalah.

Ketika melakukan ini untuk situs Anda sendiri, saya hanya akan merekomendasikan menggunakan jQuery Easy yang merupakan plugin. Salah satu fitur utama adalah menghapus semua contoh jQuery lainnya sehingga tidak bisa diimpor beberapa kali.

Saat menulis ekstensi Anda sendiri yang ingin tersedia untuk umum, sebagai pengembang, penelitian tentang hal ini adalah hal pertama yang harus dilakukan. Mendeteksi apakah jQuery telah dimuat dan kemudian mengimpornya hanya berfungsi jika ekstensi lain menggunakan metode yang sama seperti yang Anda sebutkan dalam pertanyaan Anda. Masalahnya adalah bahwa tidak ada yang sempurna dan Anda akan selalu mengalami masalah di mana beberapa ekstensi ditulis dengan benar dan yang lainnya tidak, karena itu akan selalu ada kemungkinan konflik. Satu-satunya cara saya benar-benar dapat berpikir untuk menghindari ini adalah dengan melihat kode untuk jQuery Easy dan melihat bagaimana mereka menghapus contoh jQuery lainnya dan mencoba melakukannya sendiri.

Pembaruan

Anda tidak harus menggunakan jQuery sebagai alias untuk semuanya. Kita semua tentu terbiasa menggunakan $ tetapi sebenarnya jQuery adalah alias default. Jadi cara yang baik untuk menyiasati semuanya adalah dengan merangkumnya seperti ini:

jQuery.noConflict();

jQuery(document).ready(function($) {
    $("element").hide();
    // more code using $
});

Mulai dari sini, Anda dapat melanjutkan menggunakan $ sebagai alias yang dicakup secara lokal.

2
Lodder