我有多个具有相同类名的元素,理想情况下它们将是7,因此,在页面加载时它们将被隐藏,然后我想在单击锚点时显示额外的文本,但仅针对该实例对于div,我的jQuery代码目前正在删除div的所有实例中隐藏,我猜测解决方案是在某处添加this
。谢谢!
$(".show-more").click(function() {
return $(".extra-text").toggleClass("hidden");
});

.hidden {
display: none;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<p>Text</p>
<p class="hidden extra-text">More text</p>
<a href="#" class="show-more">Show more..</a>
</div>
<div>
<p>Text</p>
<p class="hidden extra-text">More text</p>
<a href="#" class="show-more">Show more..</a>
</div>
&#13;
答案 0 :(得分:3)
您需要遍历DOM以查找与引发事件的元素相关的.extra-text
元素。
要执行此操作,您可以使用this
关键字,该关键字将引用引发click事件的元素。试试这个:
$(".show-more").click(function() {
$(this).closest('div').find(".extra-text").toggleClass("hidden");
});
答案 1 :(得分:2)
在此上下文中使用.prev()
。
$(".show-more").click(function(e) {
e.preventDefault();
$(this).prev().toggleClass("hidden");
});
答案 2 :(得分:2)
.extra-text
是.show-more
的兄弟,因此您可以使用 siblings()
方法获取相邻的兄弟元素
$(".show-more").click(function() {
$(this).siblings(".extra-text").toggleClass("hidden");
});
&#13;
.hidden {
display: none;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<p>Text</p>
<p class="hidden extra-text">More text</p>
<a href="#" class="show-more">Show more..</a>
</div>
<div>
<p>Text</p>
<p class="hidden extra-text">More text</p>
<a href="#" class="show-more">Show more..</a>
</div>
&#13;