我正在开发一个非常大的页面,有很多内容和一些覆盖和各种复杂的东西。我会免费提供所有的代码,只包括相关的部分。两个(单独)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