Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测使用jQuery单击的选项卡_Javascript_Jquery_Jquery Tabs - Fatal编程技术网

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);        
});