我读了这个主题阅读更多关于stackoverflow Rails truncate with a 'read more' toggle的切换。如何在下面的代码中添加return以截断或返回其原始形式或文本,而无需刷新页面?
<div>
<% if @major.glance.length > 250 %>
<%= truncate(@major.glance, length: 250) %>
<%= link_to '...Read more', '', class: "read-more-#{@major.id}" %>
<script>
$('.read-more-<%= @major.id %>').on('click', function(e) {
e.preventDefault()
$(this).parent().html('<%= escape_javascript @major.glance %>')
})
</script>
<% else %>
<%= @major.glance %>
<% end %>
<div>
字符串
3条答案
按热度按时间7d7tgy0s1#
您可以创建两个div,一个包含截断文本,另一个包含完整文本,如果用户单击Read More,则隐藏第一个,显示第二个。Read Less:
字符串
例如:
的数据
ie3xauqp2#
将内部
if
部件更改为:字符串
只是一个侧记。这不是最好的办法。内联JavaScript是一种代码气味。它应该被提取到一个单独的文件,并以通用的方式编写。你可以使用jQuery的
siblings
方法只隐藏同级对象,而不是所有textControl
对象。ylamdve63#
下面是一个通用的解决方案,使用可以放在演示器中的单独方法。变量
str
是可能很长的文本输入。字符串
这里是JavaScript。你应该让它在页面加载时触发。
型