วิธีแก้ไขข้อผิดพลาด 'Uncaught TypeError: $ ไม่ใช่ฟังก์ชัน' ใน WordPress

เผยแพร่แล้ว: 2024-03-20

อ่า ข้อผิดพลาด “Uncaught TypeError: $ is not a function” แบบคลาสสิกใน WordPress หากคุณจุ่มเท้าลงในการพัฒนาเว็บไซต์ WordPress คุณอาจสะดุดกับข้อผิดพลาดนี้ มันเหมือนกับการพยายามสตาร์ทรถในตอนเช้าแต่กลับพบว่ารถไม่พลิกกลับเพราะคุณใช้กุญแจผิด ใน WordPress jQuery คือรถคันนั้น และสัญลักษณ์ '$' คือกุญแจที่บางครั้งอาจไม่พอดี

ข้อผิดพลาด “Uncaught TypeError: $ ไม่ใช่ฟังก์ชัน” คืออะไร

มาทำลายมันกัน jQuery ซึ่งเป็นไลบรารี JavaScript ยอดนิยม ช่วยลดความยุ่งยากในการข้ามผ่านเอกสาร HTML การจัดการเหตุการณ์ การสร้างภาพเคลื่อนไหว และการโต้ตอบ Ajax เพื่อการพัฒนาเว็บที่รวดเร็ว เป็นชุดเครื่องมือที่ธีมและปลั๊กอิน WordPress จำนวนมากพึ่งพาสำหรับคุณสมบัติที่หรูหรา

เว็บไซต์ของ jQuery การใช้สัญลักษณ์ดอลลาร์ของไลบรารีจาวาสคริปต์นี้ทำให้เกิดข้อผิดพลาด "Uncaught TypeError: $ is not a function" ใน WordPress

ใน jQuery สัญลักษณ์ '$' เป็นตัวย่อของ "jQuery" ทำให้โค้ดสะอาดและเขียนได้ง่ายขึ้น อย่างไรก็ตาม เมื่อ WordPress แสดงข้อผิดพลาด “Uncaught TypeError: $ is not a function” โดยพื้นฐานแล้วจะพูดว่า “เฮ้ ฉันไม่รู้จักสัญลักษณ์ '$' นี้เป็นส่วนหนึ่งของ jQuery”

สิ่งนี้สามารถเกิดขึ้นได้ด้วยเหตุผลสองประการ แต่มันขึ้นอยู่กับ WordPress และ วิธีการจัดการกับ jQuery ที่เป็นเอกลักษณ์ ซึ่งมักจะนำไปสู่ความสับสนและข้อผิดพลาดนี้

ส่วนที่ยุ่งยากที่สุดประการหนึ่งเกี่ยวกับข้อผิดพลาด “Uncaught TypeError: $ ไม่ใช่ฟังก์ชัน” คือลักษณะที่คลุมเครือ มันไม่ได้มาพร้อมกับคำอธิบายโดยละเอียดหรือชี้ให้คุณตรงไปยังโค้ดที่มีปัญหา คล้ายกับไฟเช็คเครื่องยนต์ของรถคุณ คุณรู้ว่ามีบางอย่างผิดปกติ แต่คุณไม่สามารถระบุปัญหาได้หากไม่มีการตรวจสอบเพิ่มเติม ความคลุมเครือนี้อาจทำให้หงุดหงิด โดยเฉพาะอย่างยิ่งหากคุณยังใหม่ต่อการแก้ไขจุดบกพร่องใน WordPress

เหตุใดข้อผิดพลาด "Uncaught TypeError: $ ไม่ใช่ฟังก์ชัน" จึงปรากฏขึ้น

มีผู้ต้องสงสัยสองสามรายที่อยู่เบื้องหลังข้อผิดพลาดนี้:

  1. โหลดไลบรารี jQuery ไม่ถูกต้อง : หาก WordPress ไม่พบ jQuery สัญลักษณ์ '$' จะไม่มีความหมายอะไรเลย มันเหมือนกับการพยายามอ่านหนังสือในความมืด คุณรู้ว่าคำเหล่านั้นอยู่ที่นั่น แต่คุณมองไม่เห็น
  2. WordPress อยู่ในโหมด noConflict : ตามค่าเริ่มต้น WordPress จะโหลด jQuery ในลักษณะที่ป้องกันไม่ให้เกิดการปะทะกับไลบรารีอื่น ๆ ที่อาจใช้สัญลักษณ์ '$' เช่นกัน มันเหมือนกับการมีเชฟสองคนอยู่ในครัว โดยทั้งคู่ยืนกรานให้ใช้มีดอันเดียวกัน เพื่อหลีกเลี่ยงภัยพิบัติด้านอาหาร WordPress ถอยกลับและพูดว่า “เอาล่ะ ฉันจะไม่ใช้สัญลักษณ์ '$'”
  3. ปลั๊กอินหรือธีมขัดแย้งกัน : บางครั้งข้อผิดพลาดเกิดขึ้นเนื่องจากปลั๊กอินหรือธีมเล่นได้ไม่ดีกับผู้อื่น โดยใช้สัญลักษณ์ '$' ในลักษณะที่ขัดแย้งกับการตั้งค่าเริ่มต้นของ WordPress

ค้นหาแหล่งที่มาของข้อผิดพลาด

แม้ว่าการทราบสาเหตุเฉพาะของข้อผิดพลาดนั้นไม่จำเป็นต้องแก้ไข แต่หากคุณจำเป็นต้องรู้ว่าเกิดอะไรขึ้น คุณมีทางเลือก 2-3 ทางที่จะช่วยคุณค้นหาแหล่งที่มาของข้อผิดพลาดที่เข้าใจยากนี้

ทักษะนักสืบของคุณมีบทบาทด้วยเครื่องมืออันทรงพลังสองอย่าง: คอนโซลนักพัฒนาซอฟต์แวร์และบันทึกการแก้ไขข้อบกพร่องของ WordPress

คอนโซลนักพัฒนาซอฟต์แวร์ : คุณสามารถเข้าถึงเครื่องมืออันล้ำค่านี้ได้จากเบราว์เซอร์ของคุณคลิกขวาที่หน้าเว็บของคุณ เลือก "ตรวจสอบ" หรือ "ตรวจสอบองค์ประกอบ" จากนั้นคลิกที่แท็บ "คอนโซล"

แท็บคอนโซลถูกไฮไลต์ไว้ในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของ Chrome สิ่งนี้มีประโยชน์สำหรับการติดตามแหล่งที่มาของข้อผิดพลาด "Uncaught TypeError: $ is not a function" ใน WordPress

คอนโซลนี้แสดงขุมทรัพย์ข้อมูลเกี่ยวกับสิ่งที่เกิดขึ้นเบื้องหลังเว็บไซต์ของคุณ รวมถึงข้อผิดพลาดที่เข้าใจยากของเรา มันเหมือนกับการมีแผนที่ที่ชี้ให้คุณเห็นว่าสมบัตินั้นอยู่ที่ไหน (หรือในกรณีนี้คือประเด็น)

บันทึกการแก้ไขข้อบกพร่องของ WordPress : สำหรับปัญหาที่เกิดขึ้นลึกเข้าไปในไซต์ WordPress ของคุณ การเปิด WP_DEBUG อาจช่วยชีวิตได้เมื่อเปิดใช้งานคุณลักษณะนี้ จะบันทึกข้อผิดพลาด คำเตือน และการแจ้งเตือนทั้งหมดในไฟล์ debug.log ภายในไดเร็กทอรี wp-content หากต้องการเปิดใช้งาน คุณจะต้องแก้ไขไฟล์ wp-config.php และตั้งค่า WP_DEBUG เป็นจริง

ไฟล์ wp-config.php จะแสดงในตัวแก้ไขข้อความโดยตั้งค่าโหมด wp_debug เป็นจริง ซึ่งสามารถช่วยค้นหาแหล่งที่มาของข้อผิดพลาดประเภทที่ไม่ถูกตรวจจับไม่ใช่ข้อผิดพลาดของฟังก์ชันใน WordPress

คิดว่าเป็นการตั้งกล้องวงจรปิดทั่วทั้งไซต์ของคุณ ไม่มีอะไรหลุดลอยไปโดยไม่ถูกบันทึกไว้

วิธีแก้ไขข้อผิดพลาด “Uncaught TypeError: $ is not a function” ใน WordPress

ไม่ว่าสาเหตุเฉพาะของข้อผิดพลาดจะเป็นเช่นไร ยางจะบรรจบกับถนนตรงจุดนี้ การแก้ไขข้อผิดพลาด “Uncaught TypeError: $ is not a function” เป็นเรื่องเกี่ยวกับการค้นหากุญแจที่ถูกต้องในการสตาร์ทรถ และมีสองกลยุทธ์ที่ตรงไปตรงมาเพื่อนำทางไปรอบ ๆ สิ่งกีดขวางนี้โดยไม่ต้องปรับแต่งโหมด “noConflict”

1. เลือกใช้ “jQuery” แทน '$'

เมื่อสคริปต์ของคุณสะดุดกับสัญลักษณ์ '$' และเกิดข้อผิดพลาด การแก้ไขที่ตรงไปตรงมาอย่างหนึ่งคือการแทนที่ทุกอินสแตนซ์ของ '$' ด้วย "jQuery" ในโค้ดของคุณ สำหรับบริบทเล็กๆ น้อยๆ นี่คือลักษณะของตัวอย่าง jQuery มาตรฐานที่ใช้ '$':

 $(ฟังก์ชั่น() {
  // รหัสของคุณรอที่นี่อย่างใจจดใจจ่อเพื่อให้ทำงานเมื่อ DOM ถูกโหลดจนเต็ม
});

เมื่อเผชิญกับข้อผิดพลาดโดยตรง วิธีแก้ไขที่เรียบง่ายแต่มีประสิทธิภาพคือการแทนที่ '$' ด้วย “jQuery” ดังนั้น ตัวอย่างที่แก้ไขจะเป็น:

 jQuery(ฟังก์ชัน() {
  //ยูเรก้า! รหัสทำงานได้อย่างราบรื่นโดยไม่ทำให้เกิดข้อผิดพลาดใดๆ
});

สำหรับผู้ที่ต้องการแนวทางที่ละเอียดอ่อนกว่านี้ การห่อหุ้มโค้ดของคุณในนิพจน์ฟังก์ชันที่เรียกใช้ทันที (IIFE) ที่มอบสัญลักษณ์ '$' อาจเป็นตัวเปลี่ยนเกมได้ เทคนิคนี้ช่วยให้คุณใช้ '$' ภายในฟังก์ชันได้อย่างปลอดภัยโดยไม่ก่อให้เกิดข้อผิดพลาดร้ายแรง:

 jQuery(ฟังก์ชั่น($) {
    // ภายในกระดาษห่อมหัศจรรย์นี้ "$" เป็นเพียงคำสั่งของคุณ
    console.log($('.primary-menu'));
});

หลังจากใช้การปรับแต่งเหล่านี้แล้ว ให้ใช้เครื่องมือสำหรับนักพัฒนาเบราว์เซอร์ของคุณหรือดูบันทึกการแก้ไขข้อบกพร่องของ WordPress เพื่อตรวจสอบการหายไปของข้อผิดพลาด “Uncaught TypeError: $ is not a function” หากข้อผิดพลาดยังคงอยู่ ให้พิจารณาทำการแมป “jQuery” ใหม่เป็นนามแฝงอื่นเพื่อหลีกเลี่ยงภาวะแทรกซ้อนเพิ่มเติม

2. สร้างนามแฝงที่กำหนดเองสำหรับ jQuery

เนื่องจาก '$' ทำหน้าที่เป็นชวเลขเริ่มต้นของ jQuery โหมด "noConflict" ของ WordPress อาจจำเป็นต้องใช้นามแฝงอื่นเพื่อเลี่ยงการปะทะกันของไลบรารี วิธีการนี้ตรงไปตรงมาอย่างน่าประหลาดใจ โดยช่วยให้คุณสามารถกำหนดสัญลักษณ์ใหม่โดยใช้โค้ดเพียงบรรทัดเดียว:

 var $j = jQuery;

ตัวอย่างนี้กำหนด “$j” เป็นนามแฝงใหม่สำหรับ jQuery ได้อย่างมีประสิทธิภาพ แม้ว่าคุณจะเลือกสัญลักษณ์ใดๆ ที่โดนใจคุณได้อย่างอิสระก็ตาม วิธีนี้น่าสนใจเป็นพิเศษสำหรับนักพัฒนาที่พบว่าการพิมพ์ “jQuery” ซ้ำๆ ยุ่งยากเล็กน้อย

เป็นที่น่าสังเกตว่าแม้หลังจากตั้งค่านามแฝงใหม่แล้ว ตัวเลือกในการใช้ "jQuery" ก็ยังคงอยู่บนโต๊ะ

ห่อมันขึ้นมา

ด้วยการใช้วิธีใดวิธีหนึ่งจากสองวิธีนี้ คุณสามารถหลีกเลี่ยงข้อผิดพลาด “Uncaught TypeError: $ is not a function” ได้อย่างงดงาม และมั่นใจได้ว่าสคริปต์ jQuery ของคุณทำงานได้อย่างราบรื่นภายใน WordPress

ไม่ว่าคุณจะเลือกที่จะแทนที่ '$' ด้วย “jQuery” โดยตรงหรือสร้างนามแฝงที่กำหนดเอง ทั้งสองเส้นทางจะนำไปสู่การอยู่ร่วมกันอย่างกลมกลืนของ jQuery กับสคริปต์อื่น ๆ ในโหมด “noConflict” ของ WordPress โปรดจำไว้ว่า หัวใจสำคัญของเว็บไซต์ที่ดำเนินไปอย่างราบรื่นนั้นอยู่ที่การทำความเข้าใจและปรับตัวให้เข้ากับกรอบการทำงานพื้นฐานของเว็บไซต์