无法使用.each获取id

时间:2011-10-10 16:33:36

标签: javascript jquery

我正在制作标签页...我正在尝试从循环中获取li的ID,然后隐藏它。找不到身份证。

<ul>
     <li id="Page1" class="tab"><a href="#">Page2</a></li>
     <li id="Page2" class="tab"><a href="#">Page2</a></li>
</ul>

jquery代码:

   $(".tab").click(function() { 
       var thisclick = $(this).attr("id");
       var links = $(this).parent();
       $(links).each(function() {
           $("#PG_" + $(this).attr("id") ).hide();
       });
        $("#PG_" + thisclick).show();
   });

5 个答案:

答案 0 :(得分:3)

如果我正确理解您的问题,您在页面上有一些相应的元素,只有在单击基础链接时才应显示。如果是这样,那么这将起作用:

$(".tab").click(function() {
   var thisclick = $(this).attr("id");
   var links = $(this).parent().children();
   $(links).each(function() {
       $("#PG_" + $(this).attr("id")).hide();
   });
    $("#PG_" + thisclick).show();
});

http://jsfiddle.net/gdc88/4/

答案 1 :(得分:2)

乍一看,您希望jQuery查询名为PG_Page1 Nodename ,这很可能没有结果。除非你有像

这样的标签
<PG_Page1></PG_Page2>

在您网页的某个位置。所以我的猜测是,您要么忘记字符串的前缀,其中.用于类名,要么#用于ID。

顺便说一句,您只需访问this.id而不是创建一个jQuery包装器对象,最后在其上调用attr()

答案 2 :(得分:2)

因为links变量是指向ul元素的指针:

var links = $(this).parent();

改变这个可以帮到你:

   $(".tab").click(function() { 
       var thisclick = $(this).attr("id");
       var links = $(this).parent();
       $(links).find("li").each(function() {
           $("PG_" + $(this).attr("id") ).hide();
       });
        $("PG_" + thisclick).show();
   });

此外,您可以使用

$(links).children("li").each( //etc

OR

$("li", links).each( //etc

答案 3 :(得分:0)

你错过选择器中的#吗?

$("#PG_" + $(this).attr("id") ).hide();

答案 4 :(得分:0)

通过HTML class添加,您可以简化jQuery。像这样

<ul>
    <li id="Page1" class="tab"><a href="#">Page1</a></li>
    <li id="Page2" class="tab"><a href="#">Page2</a></li>
</ul>

<div id='PG_Page1' class="page"> content from page 1 here </div>

<div id='PG_Page2' class="page"> content from page 2 here </div>

的jQuery

$(".tab").click(function() {
    var thisclick = $(this).attr("id");
    $('div.page').each(function(){
        $(this).hide();
        $("#PG_" + thisclick).show();        
    });
});

示例: http://jsfiddle.net/jasongennaro/fZNUH/