[英]Detect which tab was clicked with jQuery
我有一些标签:
<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>
我想识别单击了哪个选项卡,并从href
删除了tab-
前缀。
我试过这个js函数:
$('#tabs').click(function (event) {
activeTab = $(this).attr('href').split('-')[1];
FurtherProcessing(activeTab);
});
但是我收到以下错误:
TypeError:$(...)。attr(...)未定义activeTab = $(this).attr('href')。split(' - ')[1];
<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);
});
演示: http : //jsfiddle.net/6dRH6/2/
使用此: attribute-starts-with-selector
$('[href^=tabs]').click(function (event) {
activeTab = $(this).attr('href').split('-')[1];
FurtherProcessing(activeTab);
});
并从href的html中删除#
。
你可以写li
click事件并获得它的锚标记属性:
$('li').click(function (event) {
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)
});
工作小提琴链接... http://jsfiddle.net/JQnE3/
我正在使用jQuery的方法来使用事件委托。 这只将一个事件监听器绑定到ul元素,而不是每个选项卡绑定一个。 你会注意到on方法中的“a”选择器。 这使用事件冒泡来知道它是被点击的ul内的标签。
这是最快速,最有效的方式:
http://jsperf.com/complicated-jquery-selectors
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>
JS
$("#tabs").on("click", "a", function (event) {
var activeTab = $(this).attr('href').split('-')[1];
FurtherProcessing(activeTab);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.