我使用这个html结构:
<div id="products">
<ul>
<li class="selected"><a href="#">Item 1</a>
<ul>
<li><a href="#">Sub-Item 1 a</a></li>
<li><a href="#">Sub-Item 1 b</a></li>
<li><a href="#">Sub-Item 1 c</a></li>
</ul>
</li>
<li><a href="#">Item 2</a>
<ul>
<li><a href="#">Sub-Item 2 a</a></li>
<li><a href="#">Sub-Item 2 b</a></li>
</ul>
</li>
<li><a href="#">Item 3</a>
<ul>
<li><a href="#">Sub-Item 3 a</a></li>
<li><a href="#">Sub-Item 3 b</a></li>
<li><a href="#">Sub-Item 3 c</a></li>
<li><a href="#">Sub-Item 3 d</a></li>
</ul>
</li>
<li><a href="#">Item 4</a>
<ul>
<li><a href="#">Sub-Item 4 a</a></li>
<li><a href="#">Sub-Item 4 b</a></li>
<li><a href="#">Sub-Item 4 c</a></li>
</ul>
</li>
</ul>
</div>下面是jquery代码:
$(document).ready(function () {
$("#products li").click(function() {
if ($(this).attr('class') != 'selected') {
$('#products li').removeClass('selected');
$(this).addClass('selected');
}
});
$("#products li").click(function() {
$('#products li ul').slideUp();
$('#products li.selected ul').slideDown();
});
});问题:
我只希望在第一级(< li >)的项目上具有上下滑动效果,而不是在子项上
另一个问题--如果列表项已经被选中,然后你点击它,它就会向上滑动,然后再向下滑动。如果列表项目已经被选中,那么你点击它时,它会向上滑动,然后再向下滑动。如果列表项目已经被class=“选中”,你点击它,它就会向上滑动,然后再向下滑动。(如果已经发生了,应该不会发生任何事情)
有人能帮我编写jquery代码吗?
发布于 2011-10-25 19:33:23
试试这个:
演示: http://jsfiddle.net/LEdgT/6/
$(document).ready(function () {
$("#products > ul > li").click(function() {
if ($(this).has('ul')) {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected')
.find('ul').slideUp();
}
else {
$(this).addClass('selected')
.find('ul').slideDown();
}
}
});
});发布于 2011-10-25 19:22:07
将您的选择器更改为$('#products > ul > li'),它将只选择直接的子项。
或者,您可以将整个代码更改为可读性更强、重复性更低的代码:
var $topLevelItems = $("#products > ul > li");
$topLevelItems.click(function() {
if (!$(this).hasClass('selected')) {
$topLevelItems.removeClass('selected')
.find('ul')
.slideUp();
$(this).addClass('selected')
.find('ul')
.slideDown();
}
});发布于 2011-10-25 19:29:41
您可以使用:not选择器或.not执行此操作
$('#products > li:not(.selected)').click(function() {
$('#products li ul').slideUp();
$('#products li.selected ul').slideDown();
});https://stackoverflow.com/questions/7888446
复制相似问题