当点击我希望这个特定的.parents ul打开而所有其他崩溃。下面的代码对我不起作用。
我想我不明白我在以下代码中如何使用这个并滥用 e 。
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/der/jquery.cookie.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var selected;
$(".parents").click(function(){
selected = this.id;
// Open list
$("#" + selected + " ul").css("display", "block");
// Remember opened list
$.cookie('tree', '#' + this.id);
// Cycle through all lists
$(".parents").each(function(e){
// Collapse all children that does not
// belongs to the opened list
if(e.id != selected) {
$("#" + e.id + " ul").css("display", "none");
}
});
});
});
</script>
<style type="text/css">
.child_list {
display: none;
}
</style>
</head>
<body>
<ul id="tree">
<li class="parents" id="parent_1"><a href="#">Parent 1</a>
<ul class="child_list">
<li class="child"><a href="#">Child 1</a>
<li class="child"><a href="#">Child 2</a>
<li class="child"><a href="#">Child 3</a>
</ul>
</li>
<li class="parents" id="parent_2"><a href="#">Parent 2</a>
<ul class="child_list">
<li class="child"><a href="#">Child 1</a>
<li class="child"><a href="#">Child 2</a>
<li class="child"><a href="#">Child 3</a>
</ul>
</li>
</ul>
</body>
</html>
答案 0 :(得分:3)
不是重新选择内容,而是找到相对于this
相对于您点击的项目的内容,如下所示:
$(function(){
$(".parents").click(function(){
// Open list
$(this).find("ul").show();
// Remember opened list
$.cookie('tree', '#' + this.id);
// Cycle through all lists
$(this).siblings().find("ul").hide();
});
});
You can give it a try here(除了cookie之外的所有内容)。你也可以使用.slideUp()
和.slideDown()
而不是.hide()
和.show()
,check that option here给它一些动画。
上述方法使用tree traversal,因此您从点击的<li>
开始,然后四处寻找您想要的内容,例如其他.siblings()
关闭他们的孩子等等。
答案 1 :(得分:0)
更改
$(".parents").each(function(e){
// Collapse all children that does not
// belongs to the opened list
if(e.id != selected) {
$("#" + e.id + " ul").css("display", "none");
}
});
到
$(".parents").each(function(){
// Collapse all children that does not
// belongs to the opened list
id = $(this).attr('id');
if(id != selected) {
$("#" + id + " ul").css("display", "none");
}
});
e
通常是指一个事件,但作为你唯一的循环元素,那里没有事件,因此在每个元素中你都可以使用它。