簡體   English   中英

未捕獲的TypeError:undefined不是加載jquery-min.js的函數

[英]Uncaught TypeError: undefined is not a function on loading jquery-min.js

我正在建立一個普通的網頁,要求我加載大約五個CSS文件和十個Javascript文件。

  • 在HTML頁面中單獨加載它們時,我的網頁加載正常。
  • 現在進行制作,我將所有Javascript連接到一個文件中,按所需順序連接,將所有CSS連接到另一個文件中。 但是,當我嘗試使用連接文件運行網頁時,它會拋出錯誤說:

    Uncaught TypeError: undefined is not a function

在連接的Javascript文件中加載jquery.min.js的行。

我該怎么做才能緩解這種情況? 我想連接所有文件並縮小它們以進行生產。 請幫忙。


編輯:我按照他們單獨加載時的順序合並了Javascript和CSS,並且工作正常。

假設此問題仍未解決,許多單個文件不會以分號結束其代碼。 大多數jQuery腳本以(jQuery)結尾,你需要(jQuery);

作為單獨的文件,腳本將加載正常,但作為一個單獨的文件,您需要分號。

您可能需要重新檢查合並文件的順序,它應該是這樣的:

  1. jquery.min.js
  2. jQuery的ui.js
  3. 您加載的任何第三方插件
  4. 你的自定義JS

這個解決方案對我有用

;(function($){
        // your code
    })(jQuery);

在閉包內移動代碼並使用$而不是jQuery

我在https://magento.stackexchange.com/questions/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma中找到了上述解決方案

榨了太多之后

我對兩個不同版本的jQuery的引用有同樣的錯誤。

在我的母版頁面中:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

還在頁面上:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> </script>

我最近使用jqu Validation插件遇到了這個問題,使用Squishit ,也得到了js錯誤:

“undefined不是一個函數”

我通過更改對未分析的 jquery.validate.js文件的引用而不是jquery.validate.min.js來修復它。

@MvcHtmlString.Create(
    @SquishIt.Framework.Bundle.JavaScript()
        .Add("~/Scripts/Libraries/jquery-1.8.2.min.js")
        .Add("~/Scripts/Libraries/jquery-ui-1.9.1.custom.min.js")
        .Add("~/Scripts/Libraries/jquery.unobtrusive-ajax.min.js")
        .Add("~/Scripts/Libraries/jquery.validate.js")
        .Add("~/Scripts/Libraries/jquery.validate.unobtrusive.js")
         ... more files

我認為某些文件的縮小版本,例如,當使用Squishit進一步壓縮時,可能在某些情況下不會處理丟失的分號等,正如@Dustin建議的那樣,所以你可能不得不嘗試使用哪些文件雙重壓縮,你只需要留給Squishit或任何你捆綁的東西。

對於那些仍然無法解決這個問題的人,我在使用jQuery時將'this'更改為'$(this)'。

例如:

$('.icon').click(function() {
    this.fadeOut();
});

固定:

$('.icon').click(function() {
    $(this).fadeOut();
});

我遇到了同樣的問題,當錯誤地將名稱變量命名為變量時,作為函數。

所以這:

isLive = isLive(data);

失敗,生成OP提到的錯誤消息。

修復此問題就像將上面的行更改為:

isItALive = isLive(data);

我不知道,在這種情況下它有多大幫助,但我決定把這個答案給別人尋找類似問題的解決方案。

是的,我也修復了它在js庫中更改為未通知的。

例如,在標記中,更改:

<script type="text/javascript" src="js/jquery.ui.core.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.widget.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.rcarousel.min.js"></script>

對於:

<script type="text/javascript" src="js/jquery.ui.core.js"></script>
<script type="text/javascript" src="js/jquery.ui.widget.js"></script>
<script type="text/javascript" src="js/jquery.ui.rcarousel.js"></script>

退出'min'是不明確的。

謝謝你的想法。

請記住:Javascript函數是CASE SENSITIVE。

我有一個案例,我很確定我的代碼會順利運行。 但仍然有一個錯誤,我檢查了谷歌瀏覽器的Javascript控制台 ,檢查它是什么。

我的錯誤行是

opt.SetAttribute("value",values[a]);

並得到相同的錯誤消息:

Uncaught TypeError: undefined is not a function

上面的代碼似乎沒有錯,但它沒有運行。 我排除了近一個小時的故障,然后將其與我的其他運行代碼進行比較。 我的錯誤是它被設置為SetAttribute ,它應該是setAttribute

我只是使用以下代碼(在IcedCoffeeScript中)使用相同的消息:

f = (err,cb) ->
  cb null, true

await f defer err, res
console.log err if err  

在我看來,這似乎是常規的ICS代碼。 我將await-defer構造展開到常規CoffeeScript:

f (err,res) ->
  console.log err if err

真正發生的是我試圖傳遞1個回調函數(帶有2個參數)來函數f期望兩個參數,實際上沒有在f設置cb ,編譯器正確報告為undefined is not a function

錯誤的發生是因為我盲目地粘貼了回調式樣板代碼。 f不需要傳入err參數,因此應該只是:

f = (cb) ->
  cb null, true
f (err,res) ->
  console.log err if err

在一般情況下,我建議仔細檢查功能簽名和匹配arities的調用。 錯誤消息中的調用堆棧應該能夠提供有用的提示。

在您的特殊情況下,我建議在合並文件中查找兩次出現的函數定義,使用不同的簽名或對包含函數的全局變量賦值。

確保您已注釋掉任何評論。 有時復制和粘貼時你會遺漏“/ *!”

此外,當您進入控制台時,他們會列出您的錯誤,您應該一次一個。 如果你看到“Uncaught SyntaxError:Unexpected token *”這可能意味着它正在讀取你的js文件並且它沒有越過第一行。

/ *! * jquery.tools 1.1.2 - Web * *缺少的UI庫[tools.tabs-1.0.4,tools.tooltip-1.1.2,tools.scrollable-1.1.2,tools.overlay-1.1.2, tools.expose-1.0.5] * *版權所有(c)2009 Tero Piirainen * http://flowplayer.org/tools/ *文件生成:Wed Oct 07 09:40:16 GMT 2009 * /

如果有像我這樣的白痴,我有這個令人沮喪的問題,因為我忘記了一個簡單的問題

new

實例化新對象之前的關鍵字。

當我意外地將太多參數傳遞給只預期一個回調參數的jquery函數時,我得到了這個。

對於其他故障排除:確保檢查所有jquery函數調用以獲取額外參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM