2014-02-09 42 views
1

我試圖在基於Wordpress的網站上的jquery中使用「tabcordion」庫。 tabcordion javascript文件正在'入隊'並出現在jquery文件之後(這樣看起來確實不錯)。

jQuery代碼的起點是:

(function($) { 
var Tabcordion; 

$.fn.tabcordion = function(option) { 
    return this.each(function() { 
    var $this, data, options; 
    $this = $(this); 
    // rest of code .... 

當我打開我的網頁出現錯誤「類型錯誤:$未定義」螢火蟲

有點谷歌搜索我改變了所有的後$。到jQuery中。

進行排序的一些問題,但是現在我則獲得有關行錯誤:

$this = $(this); 

我假設我沒有jQuery的定義$。我試圖在功能的頂部添加一行:

$ = jQuery; 

但這並不奏效。

任何想法,我可以得到美元的行爲?

我有工作的另一個腳本由封閉:

(function($){ jQuery(document).ready(function($){ 
    // code in here 
}); })(jQuery); 

但tabcordion年底有:

(function($) { 
    // tabcordion code.... 
}).call(this); 

與 「呼叫(本)」 位被扔我嗎?

任何想法?

+0

只是把你的$改爲jQuery,如果你已經加載了jquery,它就會工作 –

+0

@AmitGarg:這不是問題所在的OP代碼。它是tabcordian。 –

回答

6

除了包含jQuery,您無需爲使jQuery定義$做任何事情。該定義是jQuery腳本的一部分。

這個錯誤告訴你三件事情之一。或者:

  1. 您還沒有包括的jQuery插件(或者你的嘗試已經失敗,例如404),或

  2. 你加載的jQuery後裝其他東西在此之前,正在接管$符號,或者

  3. 您正在調用jQuery.noConflict(),它會釋放$符號。

根據您的$ = jQuery;嘗試沒有工作,我會說它是#1。因此,請確保腳本標記位置正確,並確保您沒有收到404錯誤(或類似錯誤)。


更新您的評論後:

I'm using a plugin called "use google libraries". That is calling jQuery.noConflict() after it has run.

首先,一個WordPress插件調用noConflict似乎是一個壞主意給我。同樣,tabcordian不應完全依賴$符號; jQuery插件不能依賴$,因爲人們可以使用noConflict!然後快速瀏覽一下tabcordian的源代碼就可以看出它的確如此:依靠$

我會推薦分叉tabcordian並糾正它。通常的方法你做到這一點的一個插件是通過(function($){打開,並與})(jQuery);結束,像這樣:

(function($) { 
    // plugin code here, can use $ because it refers to our argument, 
    // not the global symbol that may not be there 
})(jQuery); 

再tabcordian的使用.call(this)那讓你感到困惑:

(function() { 
    // ...tabcordian source... 
}).call(this); 

這是毫無意義的,如果你在函數內不使用嚴格模式,而tabcordian不是。 (如果使用嚴格模式,這是一種使this繼續引用函數中的全局對象的方法。)但是,由於該源代碼是從CoffeeScript生成的,所以這可能是樣板CoffeeScript的東西,它可能是爲了支持嚴格模式。

+0

我正在使用名爲「使用谷歌庫」的插件。這是運行後調用jQuery.noConflict()。有沒有'撤消'這種方式,以便我重新定義$爲jQuery?我寧願不編輯插件,因爲任何更新都會重新引入問題。謝謝。 –

+0

@JohnT:我已經更新了答案,以解決您的評論以及關於'.call(this)'的原始問題末尾的問題。 –

+2

@TJ - 感謝您的優秀回覆。我已經設法讓它現在工作。您提供的說明非常有幫助。我對Github不夠熟悉,爲的是嘗試「分岔」某些東西。我可能最終只是把它分開;-)所以我會把它留給有更多經驗的人。再次感謝。 –

相關問題