我正在開發一個非常大的頁面,有很多內容和一些覆蓋和各種複雜的東西。我會免費提供所有的代碼,只包括相關的部分。兩個(單獨)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之前能夠讀取自定義數據字段,怎麼會突然不能?如果我不打電話給插件,它會再次運作。
我意識到這是一個非常漫長而複雜的問題,但如果有人對這個問題有什麼想法以及如何解決這個問題,我會非常感激!
發生錯誤時'this'的值是多少? – Barmar 2015-02-10 02:23:54
'console.log(this)' 返回div元素,就像我期望的那樣。 '
您可以製作一個演示問題的jsfiddle,或鏈接到實際的網站嗎? – Barmar 2015-02-10 02:32:29