我正在制作标签页...我正在尝试从循环中获取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();
});
答案 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();
});
答案 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();
});
});