Rails 4 jQuery截断字符串
Rails 4 jQuery truncate string
想要实现(…)当文本长度大于150个字符时例如这是我的jQuery代码
jQuery(document).ready(function($){
$("#content p").each(function(){
if ($(this).text().length > 150) {
$(this).text($(this).text().substr(0, 145));
$(this).append('...');
}
});
});
this is my view
<div id="content">
<p><%= job.job_description.html_safe %></p>
</div>
但问题是这个jQuery代码工作只是为第一个job_description为什么?
如果您使用像tinymce这样的文本编辑器,请尝试以下代码将html_safe变为
<div class="content">
<p><%= truncate(job.job_description, length: 170, escape: false).html_safe %></p>
</div>
如果您不介意使用ruby,您可以使用truncate方法。
你可以试试这个:
truncate("Once upon a time in a world far far away")
# => "Once upon a time in a world..."
truncate("Once upon a time in a world far far away", length: 17)
# => "Once upon a ti..."
truncate("Once upon a time in a world far far away", length: 17, separator: ' ')
# => "Once upon a..."
truncate("And they found that many people were sleeping better.", length: 25, omission: '... (continued)')
# => "And they f... (continued)"
truncate("<p>Once upon a time in a world far far away</p>")
# => "<p>Once upon a time in a wo..."
truncate("<p>Once upon a time in a world far far away</p>", escape: false)
# => "<p>Once upon a time in a wo..."
truncate("Once upon a time in a world far far away") { link_to "Continue", "#" }
# => "Once upon a time in a wo...<a href="#">Continue</a>"
为什么只有"第一"在javascript中工作的唯一原因在类似于你的情况下,你在DOM查询中使用元素的id
是因为有多个DOM元素具有相同的id
值。您需要确保DOM中的每个元素都具有唯一的id
,这是DOM文档有效所必需的。
当使用id
选择器时,返回具有id
的第一个元素,而不管文档中具有相同id
的元素的数量。当然,至少有一个具有id
的元素必须出现在DOM中,否则选择器将找不到任何内容。
所以作为一个解决方案,你可以使用html class
属性与这些元素相同的值。与id
不同,class
可以重复使用。
如下所示:
# In your view
<div class="content">
<p><%= job.job_description.html_safe %></p>
</div>
# JQuery
jQuery(document).ready(function($){
$(".content p").each(function(){
if ($(this).text().length > 150) {
$(this).text($(this).text().substr(0, 145));
$(this).append('...');
}
});
});
@8bithero已经提到的另一种方法是,您可以使用Rails TextHelper#truncate
来生成截断的文本,而根本不用担心javascript操作。使用这种方法,您可以摆脱javascript代码并将view
更新为:
# In your view
<div class="content">
<p><%= truncate(job.job_description, length: 150) %></p>
</div>
相关文章:
- 字符串Jquery结构中的变量
- 在字符串 jquery 中添加空格
- 如何在字符串 jQuery 上调用函数
- 将 .val() 转换为字符串 jQuery
- 如何放置 PHP 字符串 jQuery 验证错误消息
- 查找字符串 jQuery/Javascript 的部分
- 从字符串 jQuery 中删除字符串
- 比较明显相等的字符串 JQuery
- 在字符串中使用 PHP 作为字符串.(JQuery)
- 比较两个字符串(jquery .text() 和文字字符串)
- 替换<a>如果它以字符串JQuery结尾
- 字符串jQuery剩余的空白数量
- 重新注册字符串jquery.Ui可拖动
- 字符串替换为另一个字符串jquery/javascript
- 如果子值与某个字符串JQuery匹配,则隐藏父元素
- 单击时从输入中删除字符串?jQuery
- 如何获取特定子字符串jquery之后的字符串
- 不能识别父-字符串JQuery中的子字符串
- 翻译KeyDown键码字符串(jQuery)
- 即使我没有引号来转义,它仍然说我有一个未闭字符串(Jquery)