Saya memiliki skrip jQuery sederhana di plugin WordPress yang menggunakan pembungkus jQuery seperti ini:
$(document).ready(function(){
// jQuery code is in here
});
Saya memanggil skrip ini dari dalam Dashboard WordPress dan saya memuatnya SETELAH kerangka kerja jQuery telah dimuat.
Ketika saya memeriksa halaman di Firebug, saya terus menerima pesan kesalahan:
TypeError: $ bukan suatu fungsi
$ (dokumen) .ready (function () {
Haruskah saya membungkus skrip dalam fungsi ini:
(function($){
// jQuery code is in here
})(jQuery);
Saya telah mengalami kesalahan ini beberapa kali dan tidak yakin bagaimana cara menanganinya.
Bantuan apa pun akan sangat dihargai.
$
konsol dan menekan enter - apa yang Anda lihat?Jawaban:
Secara default ketika Anda membuat jQuery di Wordpress Anda harus menggunakan
jQuery
, dan$
tidak digunakan (ini untuk kompatibilitas dengan perpustakaan lain).Solusi Anda membungkusnya
function
akan bekerja dengan baik, atau Anda dapat memuat jQuery dengan cara lain (tapi itu mungkin bukan ide yang baik di Wordpress).Jika Anda harus menggunakan
document.ready
, Anda sebenarnya dapat masuk$
ke panggilan fungsi:sumber
jQuery(function ($) { ...
, Anda harus menggunakanjQuery
sebagai gantinya$
Ini harus memperbaikinya:
Sederhananya, WordPress menjalankan skrip mereka sendiri sebelum Anda dapat dan mereka merilis
$
var sehingga tidak akan bertabrakan dengan perpustakaan lain. Ini masuk akal, karena WordPress digunakan untuk semua jenis situs web, aplikasi, dan tentu saja, blog.Dari dokumentasi mereka:
sumber
Solusi ini bekerja untuk saya
Pindahkan kode Anda di dalam penutupan dan gunakan
$
sebagai gantijQuery
Saya menemukan solusi di atas di /magento/33348/uncaught-typeerror-undefined-is-not-not-a-function-when-using-a-jquery-plugin-in-ma
... setelah mencari terlalu banyak
sumber
Anda dapat menghindari konflik seperti ini
sumber
Penghargaan untuk Ashwani Panwar dan Cyssoo: https://stackoverflow.com/a/29341144/3010027
sumber
Coba ini:
sumber
Anda harus melewati fungsi $ in ()
sumber
ganti
$
tanda denganjQuery
seperti ini:sumber
Periksa referensi jQuery Anda. Mungkin saja Anda merujuknya lebih dari satu kali atau Anda memanggil fungsi terlalu dini (sebelum jQuery didefinisikan). Anda dapat mencoba seperti yang disebutkan dalam komentar saya dan meletakkan referensi jQuery di bagian atas file Anda (di kepala) dan melihat apakah itu membantu.
Jika Anda menggunakan enkapsulasi jQuery, itu seharusnya tidak membantu dalam kasus ini. Silakan coba karena saya pikir ini lebih cantik dan lebih jelas, tetapi jika jQuery tidak didefinisikan Anda akan mendapatkan kesalahan yang sama.
Pada akhirnya ... jQuery saat ini tidak didefinisikan.
sumber
script
referensi Anda yang manaJQuery
ke atas Andaindex.html
dan itu mungkin akan berhasilJuga, saya menemukan solusi yang baik untuk menggunakan mode noConflict jQuery.
Saya menemukan solusi ini dari sini. https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/
sumber
Menggunakan
dari pada
atau
Dalam fungsi tersebut, $ poin ke jQuery seperti yang Anda harapkan
sumber
Apa yang berhasil untuk saya. Pustaka pertama yang diimpor adalah pustaka kueri dan kemudian panggil metode jQuery.noConflict ().
sumber
sumber
sekarang gunakan jq sebagai ganti jQuery
sumber
Anda menemukan masalah ini ketika nama fungsi Anda dan salah satu nama id dalam file sama. pastikan semua nama id Anda di file unik.
sumber
Kamu bisa memakai
atau
sumber