Javascript 检测使用jQuery单击的选项卡
我有一些标签:Javascript 检测使用jQuery单击的选项卡,javascript,jquery,jquery-tabs,Javascript,Jquery,Jquery Tabs,我有一些标签: <ul id="tabs"> <li><a href="#tab-allData">All data</a></li> <li><a href="#tab-someOtherData">Some other data</a></li> <li><a href="#tab-xyData">xyData</a><
<ul id="tabs">
<li><a href="#tab-allData">All data</a></li>
<li><a href="#tab-someOtherData">Some other data</a></li>
<li><a href="#tab-xyData">xyData</a></li>
</ul>
但我得到了以下错误:
类型错误:$..属性。。。是未定义的activeTab=
$this.attr'href'.split'-'[1]
您可以编写li click事件并获取其锚定标记属性:
$('li').click(function (event) {
activeTab = $(this).find('a').attr('href').split('-')[1];
FurtherProcessing(activeTab);
});
使用以下命令:
并从href的html中删除
<ul id="tabs">
<li><a href="#tab-allData">All data</a></li>
<li><a href="#tab-someOtherData">Some other data</a></li>
<li><a href="#tab-xyData">xyData</a></li>
</ul>
$('#tabs').on("click", "li", function (event) {
var activeTab = $(this).find('a').attr('href').split('-')[1];
FurtherProcessing(activeTab);
});
演示:
使用一个类,它对您未来的编码更好
<li><a href="#tab-allData" class="tabs">All data</a></li>
<li><a href="#tab-someOtherData" class="tabs">Some other data</a></li>
<li><a href="#tab-xyData" class="tabs">xyData</a></li>
$('.tabs').click(function (event) {
var activeTab = $(this).attr('href').split('-')[1];
alert(activeTab)
});
工作小提琴链接 我正在使用jQuery的on方法来利用事件委派。这仅将一个事件侦听器绑定到ul元素,而不是每个选项卡绑定一个事件侦听器。您将注意到on方法中的a选择器。这利用事件冒泡来知道单击的是ul中的a标记 这是最快、最有效的方法: HTML
您需要将var activeTab=而不仅仅是activeTab=。事实上,您的选择器是错误的,$‘tabs’不匹配。在本页的所有答案中,这是效率最低的!OP正在使用选项卡的ID。为什么不从中选择,然后在里面找到a标签呢?它仍然比这个要快一个数量级,它将目标锁定在包含标签的页面上的所有无序列表上。或者更好的是,再次使用更有效的事件委派。查看此jsperf以了解结果:@ChrisSpittles,谢谢。我已经更新了我的答案。没问题,但您的更新速度仍然比使用ID和事件委派慢55%。请参阅更新的性能。请尝试:$'tabs'。onclick,a,function-改为。
<ul id="tabs">
<li><a href="#tab-allData">All data</a></li>
<li><a href="#tab-someOtherData">Some other data</a></li>
<li><a href="#tab-xyData">xyData</a></li>
</ul>
$('#tabs').on("click", "li", function (event) {
var activeTab = $(this).find('a').attr('href').split('-')[1];
FurtherProcessing(activeTab);
});
<li><a href="#tab-allData" class="tabs">All data</a></li>
<li><a href="#tab-someOtherData" class="tabs">Some other data</a></li>
<li><a href="#tab-xyData" class="tabs">xyData</a></li>
$('.tabs').click(function (event) {
var activeTab = $(this).attr('href').split('-')[1];
alert(activeTab)
});
<ul id="tabs">
<li><a href="#tab-allData">All data</a></li>
<li><a href="#tab-someOtherData">Some other data</a></li>
<li><a href="#tab-xyData">xyData</a></li>
</ul>
$("#tabs").on("click", "a", function (event) {
var activeTab = $(this).attr('href').split('-')[1];
FurtherProcessing(activeTab);
});