2015-02-10 42 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,因为它只是寻找页面上任何位置的“活动”,正在消失。所以我自己的错!好。