如何在jQuery中使用this
来点击+
符号以滑动.expand
元素?我想使代码简单,并对页面上的所有文章使用相同的脚本。一种解决方案是为每个article元素使用唯一的id并检测该id的每次单击,但是我猜这个脚本将是不必要的大而复杂的。
如何改进下面的脚本以便能够将它用于多篇文章?也许使用slideDown
和slideUp
代替slideToggle
更容易/更好?
<article class="post">
<header>
<h2>Headline</h2>
</header>
<img src="images/test.jpg">
<div class="expand">Text</div>
<div class="click">+</div>
</article>
<article class="post">
<header>
<h2>Headline</h2>
</header>
<img src="images/test.jpg">
<div class="expand">Text</div>
<div class="click">+</div>
</article>
$(document).ready(function(){
$(".expand").hide();
$(".click").click(function(){
$(".expand").slideToggle();
});
});
答案 0 :(得分:1)
您可以使用DOM遍历从单击的.expand
元素中查找相关的.click
。
您可以使用点击处理程序中的this
关键字来获取引发事件的.click
元素的引用。在那里,您可以使用prev()
方法查找所需的.expand
。试试这个:
$(".click").click(function(){
$(this).prev('.expand').slideToggle();
});
另请注意,最好使用CSS设置页面中元素的初始状态。
答案 1 :(得分:0)
此代码获取点击元素的父元素,该元素具有.click类,并找到具有.expand类的子元素。
$("body").on("click", ".click", function(){
$(this).parent().children(".expand").slideToggle();
});