我有一些嵌套列表,并且希望能够在顶部显示“全部显示”按钮,但它似乎不起作用。
有什么建议吗?我知道可能有其他方法可以完成类似的事情,但我正在利用这个机会来了解更多有关jquery的信息,并试图弄清楚为什么这个特殊的例子不起作用。
以下是行动:http://hortitude.com/samples/jquery_show_trouble.html
代码......
<html>
<head>
<script type="text/javascript" src="../jquery/jquery-1.4.4.js"></script>
<script type="text/javascript">
$( function () {
$("h1").click ( function () {
var subitems = $(".bar");
$(".bar").show();
});
$(".foo").click ( function () {
var obj = $(this);
var children = obj.children();
$(this).children().toggle (500);
});
});
</script>
</head>
<body>
<h1>show all</h1>
<ul>
<li class="foo">item 1
<ul>
<li class="bar">sub-item 1</li>
<li class="bar">sub-item 2</li>
</ul>
</li>
<li class="foo">item 2
<ul>
<li class="bar">sub-item 1</li>
<li class="bar">sub-item 2</li>
</ul>
</li>
<li class="foo">item 3
<ul>
<li class="bar">sub-item 1</li>
<li class="bar">ysub-item 2</li>
</ul>
</li>
</ul>
</body>
</html>
答案 0 :(得分:3)
您隐藏了<ul>
元素,$(this).children()
选择了特定<ul>
元素中的.foo
元素。
如果隐藏了可见元素的任何祖先,则该元素仍将被隐藏,因此$('.foo').show()
无效。
待办事项
$(".foo").children().show();
顺便说一下。标题元素(<h1>
)不是按钮;)我建议使用不同的东西。
答案 1 :(得分:1)
您需要调整h1点击以执行以下操作:
$("h1").click(function() {
$(".foo").children().show();
});
您的.foo
点击隐藏了包含ul
元素的.bar
列表。
jsfiddle上的示例。
答案 2 :(得分:1)
你遇到的问题是这个功能:
$(".foo").click ( function () {
var obj = $(this);
var children = obj.children();
$(this).children().toggle (500);
});
隐藏包含LI项目的UL项目,因此即使您正在调用$(".bar").show()
,它们也不会显示,因为它们的父UL项目设置为display:none。
答案 3 :(得分:0)
试试这个:
$("h1").click ( function () {
var subitems = $(".bar");
$(".bar").parent().show();
});
希望它有所帮助。
答案 4 :(得分:0)
那是因为当你点击foo时你隐藏了ul而不是li:)
$(this).children().toggle (500);
应为$(this).find('li.bar').toggle (500);