我正在尝试使用jQuery标签但是有一个我无法解决的问题。
在文档正文的某处,我有:
<ul class="tabs-horizontal">
<li id="a" class="current"><a href="#">Tab A</a></li>
<li id="b"><a href="#">Tab B</a></li>
</ul>
在我的脚本部分,我有:
<script type="text/javascript">
$(document).ready(function(){
var activeTabIndex = -1;
var tabNames = ["a","b"];
$(".tabs-horizontal > li").click(function(e){
for(var i=0;i<tabNames.length;i++) {
if(e.target.id == tabNames[i]) {
activeTabIndex = i;
} else {
$("#"+tabNames[i]).removeClass("current");
}
}
$("#"+tabNames[activeTabIndex]).addClass("current");
return false;
});
});
</script>
它不起作用,因为我将e.target.id
与tabNames
元素进行比较。调试后,我发现e.target.id
返回-1
。
那么,我如何获得这两个li
ID(即"a"
和"b"
)?
感谢。
答案 0 :(得分:6)
$(".tabs-horizontal > li").click(function(e) {
$(this).addClass("current").siblings().removeClass("current");
return false;
});
答案 1 :(得分:4)
在jQuery事件处理程序中,this
将是您挂接事件的DOM元素。由于您在li
元素上挂钩活动,this.id
将成为他们的ID。
但你不需要身份证。您可以使用遍历来执行您要执行的操作。我即将展示如何,但undefined already has。
答案 2 :(得分:2)
你可以这样做:
$(".tabs-horizontal > li").click(function () {
$('li.current').removeClass("current");
$(this).addClass("current");
return false;
});
答案 3 :(得分:1)
e.target指向li内部的链接。你应该使用e.target.parentElement.id