<div class="box">
<div class="item-name">我是名称**1**</div>
<div class="item-list">
<ul>
<li><a href="#">内容1</a></li>
<li><a href="#">内容2</a></li>
<li><a href="#">内容3</a></li>
<li><a href="#">内容4</a></li>
<li><a href="#">内容5</a></li>
<li><a href="#">内容6</a></li>
</ul>
</div>
<div class="item-name">我是名称**2**</div>
<div class="item-list">
<ul>
<li><a href="#">内容1</a></li>
<li><a href="#">内容2</a></li>
<li><a href="#">内容3</a></li>
</ul>
</div>
<div class="item-name">我是名称**3**</div>
<div class="item-list">
<ul>
<li><a href="#">内容1</a></li>
<li><a href="#">内容2</a></li>
<li><a href="#">内容3</a></li>
<li><a href="#">内容4</a></li>
<li><a href="#">内容5</a></li>
</ul>
</div>
</div>
以上是HTML结构,如何让每个UL里的LI只显示一个内容1,并插入一个按钮或链接(就是点击显示),点击该按钮只显示当前点击区域内的内容2-内容N?请问如何用JQUERY来实现呢?(HTML结构中的LI有多有少,不固定的!)
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="script/jquery_2_1_3/jquery-2.1.3.min.js"></script>
<title>Title</title>
<script>
$(function(){
$('div.box div.item-list ul li:not(:first-child)').hide();
$('div.box div.item-list ul li:first-child')
.append('<button class="btshowen">显示</button>')
.find("button").on('click', function (e) {
if($(this).hasClass("btshowen")){
$(this).removeClass("btshowen");
$(this).text('隐藏');
}else{
$(this).addClass("btshowen");
$(this).text('显示');
}
$(this).parent().nextAll().toggle();
});
});
</script>
</head>
<body>
<div class="box">
<div class="item-name">我是名称**1**</div>
<div class="item-list">
<ul>
<li><a href="#">内容1</a></li>
<li><a href="#">内容2</a></li>
<li><a href="#">内容3</a></li>
<li><a href="#">内容4</a></li>
<li><a href="#">内容5</a></li>
<li><a href="#">内容6</a></li>
</ul>
</div>
<div class="item-name">我是名称**2**</div>
<div class="item-list">
<ul>
<li><a href="#">内容1</a></li>
<li><a href="#">内容2</a></li>
<li><a href="#">内容3</a></li>
</ul>
</div>
<div class="item-name">我是名称**3**</div>
<div class="item-list">
<ul>
<li><a href="#">内容1</a></li>
<li><a href="#">内容2</a></li>
<li><a href="#">内容3</a></li>
<li><a href="#">内容4</a></li>
<li><a href="#">内容5</a></li>
</ul>
</div>
</div>
</body>
</html>
如果是这么明确的需求,用:first-child
伪类选择就好了。
css
.item-list li {
display: none;
}
.item-list li:first-child {
display: '';
}
js
$('.item-list li:first-child').click((ele) => {
$(ele).nextAll().toggle()
})
好久不写jQuery代码了,不知道jQuery语法对不对,不过大致就是这个思路,供参考。
不需要考虑相同的class怎么处理,
直接想象相同class里面的东西怎么处理,用$(this)可指代当前的对象
這樣是您要的嗎?示範 / Codepen 完整版
原碼如下
$(function () {
$('.item-list > ul li:not(:first-child)').hide();
$('.item-list > ul li:first-child').on('click', function (e) {
e.preventDefault();
$(this).find('+ li:not(:first-child)').toggle();
});
});
选择器 :nth-child(n) (>=1)
或者
.eq(n) (>=0)
你可以让.item-list下的所有li都隐藏掉hide,然后让。.item-list下的第一个li显示,然后增加一个点击事件,获取当前点击.item-list的位置(index),让对应.item-list下的li都显示就可以了。