如何在jQuery中获取周围列表项的id?

时间:2013-06-19 06:32:47

标签: jquery

我正在尝试使用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.idtabNames元素进行比较。调试后,我发现e.target.id返回-1

那么,我如何获得这两个li ID(即"a""b")?

感谢。

4 个答案:

答案 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