2015-02-10 39 views
1

我正在開發一個非常大的頁面,有很多內容和一些覆蓋和各種複雜的東西。我會免費提供所有的代碼,只包括相關的部分。兩個(單獨)jQuery Tab插件殺我的代碼

本質上,我有一些側欄按鈕打開覆蓋,取決於點擊的按鈕。該HTML低於:

<div class="sideBtn sidebarOverlay" data-linkto="overlayMyInvoices"> 
    <img src="icons/icon_invoice.svg" alt=""><h2>Invoices</h2> 
</div> 

<div id="overlayMyInvoices" class="overlay"> 
</div> 

這裏是一些的Javascript:

$(sideBtns).click(function(index){ 

    var newId = "#" + (($(this).data("linkto")).toString()); 
    var newOverlay = $(newId); 

}); 

(我已經離開了JavaScript的一個不少,因爲我說我只包括相關的位。'toString'可能沒有必要,我不完全確定我在那裏回頭看看,但我非常懷疑這是問題所在。)

在添加jQuery選項卡插件之前,此代碼工作正常。

現在,在其中一個疊加層中,我需要一些「標籤」內容 - 因此我下載了三個單獨的jQuery選項卡插件,並且所有這三個都產生了相同的錯誤。在這個特例中,我使用的是Tabslet。首先,這裏的標籤區域的HTML:

<div id="overlayMyInvoices" class="overlay"> 
    <div class='tabs'> 
     <ul class='horizontal'> 
      <li><a href="#tab-1">Tab 1</a></li> 
      <li><a href="#tab-2">Tab 2</a></li> 
      <li><a href="#tab-3">Tab 3</a></li> 
     </ul> 
     <div id='tab-1'></div> 
     <div id='tab-2'></div> 
     <div id='tab-3'></div> 
    </div><!-- tabs --> 
</div> 

而這裏的Java腳本:

$('.tabs').tabslet(); 

出於某種原因,我用每一個jQuery的標籤插件產生相同的相同的錯誤(我也已經使用jQuery的UI核心插件,和EasyTabs)。當我嘗試使用側邊欄按鈕來打開任何覆蓋,覆蓋不出現,我得到這個控制檯錯誤:

Uncaught TypeError: Cannot read property 'toString' of undefined 

或許這個錯誤的最奇怪的因素是,它僅出現一次。在第一個錯誤函數正確之後的任何後續點擊。

我只是看不到這些插件如何導致這個錯誤出現。 jQuery之前能夠讀取自定義數據字段,怎麼會突然不能?如果我不打電話給插件,它會再次運作。

我意識到這是一個非常漫長而複雜的問題,但如果有人對這個問題有什麼想法以及如何解決這個問題,我會非常感激!

+0

發生錯誤時'this'的值是多少? – Barmar 2015-02-10 02:23:54

+0

'console.log(this)' 返回div元素,就像我期望的那樣。 '

...
' 另外值得注意的是(我會編輯我原來的帖子來反映這一點):它的作品第二次點擊。但第一次點擊,每次頁面加載時,都會返回錯誤。 – PeregrineStudios 2015-02-10 02:30:21

+0

您可以製作一個演示問題的jsfiddle,或鏈接到實際的網站嗎? – Barmar 2015-02-10 02:32:29

回答

0

我發現了這個問題,對於任何仍在關心的人來說。我寫了一些令人難以置信的愚蠢的Javascript,正在尋找「積極」類。只有非特定類爲「活動」的任何元素。關於'積極'的事情?很多開發人員使用這個詞很棒。我的代碼和插件都使用「主動」和我的Javascript,因爲它只是尋找頁面上任何位置的「活動」,正在消失。所以我自己的錯!好。