我有一些我不想完全显示的文本,只是其中的一部分,并且可以选择使用按钮或其他方式“阅读更多”。我尝试以下方法,但由于某种原因它对我不起作用:
$(document).ready(function() {
$(".more").toggle(function() {
$(this).text("Leer menos...").siblings(".complete").show();
}, function() {
$(this).text("Leer mas...").siblings(".complete").hide();
});
});
.more {
cursor: pointer;
background-color: #ccf;
}
.complete {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="text-comment">
<p class="text-par">"Vision"</p>
<p class="text-name">
<span class="summary">
<p>Lorem ipsum dolor sit amet, vis alterum feugiat sanctus ea. Affert facete eu cum, ut dicta vitae quo. Cum
id aeque option epicuri, nec oblique suscipit ad. Et sea odio adhuc altera. Verterem nominati an mel, his
diam consetetur ei. Eligendi principes sed no, ubique patrioque vix cu, soluta veritus percipit vim ex.</p>
</span>
<span class="complete">
<p>Pro populo dolorem eu. Justo conclusionemque sea ne. At dicat putent eum. Reprimique delicatissimi vel et.</p>
<p>Posse constituam pro eu. Sit graecis appetere at, id his quas possit platonem, ius at nobis decore ullamcorper.
Vix ne latine iudicabit constituto, justo fastidii eleifend et pro, ei sit solet dicant mediocrem. Te sit
cibo percipit persecuti. Debet convenire suavitate ei vis. Pri utinam labitur temporibus ex.</p>
</span>
<span class="more">Leer mas...</span>
</p>
</div>
如果它可以只用 JavaScript 来完成,那就更好了,但我发现的所有例子都是用 jQuery 完成的。
代码对您不起作用的问题是因为您使用
toggle
. 该方法通过传递两个参数来隐藏/显示元素:持续时间和动画完成时要执行的函数。当您尝试运行时,它相当于从toggle
1.8 版开始弃用并从 1.9 版开始删除的事件。这是因为您可能依赖于过时的教程或页面。一种解决方案是监听 click 事件并执行
toggle
de#complete
(同时更改按钮文本)。像这样的东西:使用 JavaScript,根据您的内容
HTML
,一种选择是仅访问previousElementSibling以便从此属性中,您可以使用classListtoggle
属性添加和删除一个类为此,在创建一个
show
用于toggle
无需 JavaScript 或 jQuery 就可以在 HTML 中找到与您正在寻找的内容相近的东西。
<details>
和标签<summary>
正是为了做一些类似于你想要的事情:一个在点击时显示并在再次点击时隐藏的手风琴/标签:该解决方案存在一些问题:
并非所有浏览器都支持它(特别是 IE/Edge ......虽然它似乎要进入 Edge,但最终它没有,他们已经“研究”了一年)。
即使在支持它的浏览器中,它也不是很普遍(您无法配置文本将如何显示,并且可用的少数配置是使用浏览器前缀)。
尽管如此,CSS 可以用于一些样式,并且知道
open
在文本打开时添加了属性,您可以使用::before
/::after
来更改文本(但您仍然无法将它放在它后面,在至少现在)。另一种方法是添加类以使其看起来完整并缩短它。
要使用 css 缩短段落,您可以使用
white-space: nowrap;
仅使用 HTML+CSS
checkbox
和同级选择器的替代方法。