给定以下 HTML:
<!DOCTYPE html>
<html>
<head>
[include jQuery here]
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }
</style>
</head>
<body>
<div class="commentline">
<div class="carrowholder">
<div class="ctoggle">Click to toggle</div>
<div class="arrowwrap">
</div>
</div>
<div class="commentholder">
<div class="commenttitle">
Title 1
</div>
<div class="commentbody">
Body 1
</div>
</div>
<div class="commentline">
<div class="carrowholder">
<div class="ctoggle">Click to toggle</div>
<div class="arrowwrap">
</div>
</div>
<div class="commentholder">
<div class="commenttitle">
Title 2
</div>
<div class="commentbody">
Body 2
</div>
</div>
</div>
</body>
</html>
此 Javascript 将起作用:
$('.ctoggle').click(function(e) {
$(this).closest('.commentline').find('.commentbody').toggle();
});
这样做是在 DOM 中找到第一个具有类的元素.commentline
(它是所有 DIV 的父注释),然后它在 DOM 树的该分支中找到所有具有该类的元素.commentbody
,在这种情况下很好,因为每个评论行只有一个评论体。.commentbody
如果每个 DIV 中有更多DIV,.commentline
那么您需要进一步指定哪个 DIV(使用.first()
或.find()
再次等)。
已经提到了其他解决方案,但我发现这种方法更具可读性,因此可维护 - 但这是我的观点:O)