如何修復 WordPress 中的「Uncaught TypeError: $ Is Not a Function」錯誤

已發表: 2024-03-20

啊,WordPress 中經典的「Uncaught TypeError: $ is not a function」錯誤。 如果您已經嘗試過 WordPress 網站開發,您可能會偶然發現此錯誤。 這就像早上試圖啟動你的汽車卻發現它無法翻車,因為你使用了錯誤的鑰匙。 在 WordPress 中,jQuery 就是那輛車,「$」符號是有時不合適的鑰匙。

什麼是「Uncaught TypeError: $ is not a function」錯誤?

讓我們來分解一下。 jQuery 是一個深受喜愛的 JavaScript 函式庫,它簡化了 HTML 文件遍歷、事件處理、動畫和 Ajax 交互,以實現快速 Web 開發。 這是一個工具包,許多 WordPress 主題和外掛都依賴它來實現其精美的功能。

jQuery 的網站。此 javascript 函式庫使用美元符號會導致 WordPress 中出現「Uncaught TypeError: $ is not a function」錯誤。

在 jQuery 中,「$」符號是「jQuery」的簡寫,使程式碼更乾淨、更容易編寫。 然而,當 WordPress 拋出“Uncaught TypeError: $ is not a function”錯誤時,它本質上是在說:“嘿,我不認為這個‘$’符號是 jQuery 的一部分。”

發生這種情況的原因有很多,但歸根結底是 WordPress 及其處理 jQuery 的獨特方式,這通常會導致混亂和此錯誤。

關於「Uncaught TypeError: $ is not a function」錯誤最棘手的部分之一是它的模糊性。 它沒有提供詳細的解釋,也沒有直接向您指出有問題的程式碼片段。 它類似於汽車的檢查引擎燈; 您知道出了問題,但如果不進一步調查就無法找出問題所在。 這種模糊性可能會令人沮喪,特別是如果您不熟悉 WordPress 偵錯。

為什麼會彈出「Uncaught TypeError: $ is not a function」錯誤?

此錯誤背後有一些常見的嫌疑犯:

  1. jQuery 函式庫未正確載入:如果 WordPress 找不到 jQuery,則「$」符號對其沒有任何意義。 這就像試圖在黑暗中閱讀一樣。 你知道這些字在那裡,但你看不到它們。
  2. WordPress 處於無衝突模式:預設情況下,WordPress 載入 jQuery 的方式可以防止它與其他也可能使用「$」符號的函式庫發生衝突。 這有點像廚房裡有兩個廚師,都堅持使用同一把刀。 為了避免烹飪災難,WordPress 退後一步說:“好吧,我不會使用‘$’符號。”
  3. 外掛程式或主題衝突:有時,出現錯誤的原因是外掛程式或主題與其他外掛程式或主題無法很好地配合,使用「$」符號的方式與 WordPress 的預設設定衝突。

尋找錯誤根源

雖然知道錯誤的具體原因並不是修復錯誤的必要條件,但如果您確實需要知道發生了什麼,可以使用幾個選項來幫助您追蹤這個難以捉摸的錯誤的根源。

借助兩個強大的工具,您的偵探技能將發揮作用:開發人員控制台和 WordPress 偵錯日誌。

開發者控制台:您可以從瀏覽器存取這個寶貴的工具。右鍵單擊網頁,選擇“檢查”或“檢查元素”,然後按一下“控制台”標籤。

控制台標籤在 Chrome 的開發者工具中突出顯示。這有助於追蹤 WordPress 中「Uncaught TypeError: $ is not a function」錯誤的來源。

該控制台顯示有關您網站幕後發生的情況的大量信息,包括我們難以捉摸的錯誤。 這就像有一張地圖可以指引您找到寶藏(或在本例中為問題)所在的位置。

WordPress 偵錯日誌:對於 WordPress 網站中更深入的問題,開啟 WP_DEBUG 可以成為救星。啟用此功能後,會在 wp-content 目錄中的 debug.log 檔案中記錄所有錯誤、警告和通知。 要啟動它,您需要編輯 wp-config.php 檔案並將 WP_DEBUG 設為 true。

wp-config.php 檔案顯示在文字編輯器中,wp_debug 模式設定為 true。這可以幫助找到 WordPress 中未捕獲的 typeerror is not a function 錯誤的來源。

可以將其視為在整個站點設置監視攝影機; 沒有什麼事情會在不被記錄的情況下溜走。

如何修復 WordPress 中的「Uncaught TypeError: $ is not a function」錯誤

無論錯誤的具體原因是什麼,這就是橡膠與道路相遇的地方。 修復「Uncaught TypeError: $ is not a function」錯誤是為了找到啟動汽車的正確鑰匙,有兩個簡單的策略可以繞過這個障礙,而無需調整「noConflict」模式。

1. 選擇“jQuery”而不是“$”

當您的腳本偶然發現“$”符號並引發錯誤時,簡單的解決方法是在程式碼中將每個“$”實例替換為“jQuery”。 為了了解一些上下文,以下是使用「$」的標準 jQuery 片段的外觀:

 $(函數() {
  // 一旦 DOM 完全加載,你的程式碼就急切地等待運行
});

面對錯誤,一個簡單而有效的解決方案是將“$”替換為“jQuery”。 因此,修改後的程式碼片段將是:

 jQuery(函數() {
  // 尤里卡! 程式碼運行順利,沒有出現任何錯誤。
});

對於那些喜歡更微妙方法的人來說,將程式碼封裝在傳遞「$」符號的立即呼叫函數表達式 (IIFE) 中可能會改變遊戲規則。 這種技術允許您在函數內安全地使用“$”,而不會呼叫可怕的錯誤:

 jQuery(函數($) {
    // 在這個神奇的包裝器中,​​「$」完全由您來指揮。
    console.log($('.主選單'));
});

實作這些調整後,使用瀏覽器的開發人員工具或檢視 WordPress 偵錯日誌來驗證「Uncaught TypeError: $ is not a function」錯誤是否消失。 如果錯誤持續存在,請考慮將「jQuery」重新對應到不同的別名,以避免進一步的複雜化。

2. 為 jQuery 建立自訂別名

由於「$」是 jQuery 的預設簡寫,WordPress 的「noConflict」模式可能需要一個替代別名來避免函式庫衝突。 這種方法非常簡單,只需一行程式碼即可分配新符號:

 var $j = jQuery;

此程式碼片段有效地將「$j」指定為 jQuery 的新別名,但您可以自由選擇與您產生共鳴的任何符號。 對於那些覺得重複輸入「jQuery」有點麻煩的開發人員來說,這種方法特別有吸引力。

值得注意的是,即使在設定了新的別名之後,使用「jQuery」的選項仍然存在。

把它包起來

透過採用這兩種方法中的任何一種,您都可以優雅地避開「Uncaught TypeError: $ is not a function」錯誤,並確保您的 jQuery 腳本在 WordPress 中無縫運行。

無論您選擇直接用「jQuery」替換「$」還是建立自訂別名,這兩種路徑都會導致 jQuery 在 WordPress 的「無衝突」模式下與其他腳本和諧共存。 請記住,網站順利運作的關鍵在於理解並適應其底層框架。