截断段落的前100个字符并隐藏段落的其余内容,以显示/隐藏更多/更少链接的其余内容
Truncate paragraph first 100 character and hide rest content of paragraph to show/hide rest contenct with more/less link
我有一段超过500个字符。我只想得到最初的100个字符并隐藏它的其余部分。我还想在100个字符旁边插入"更多"链接。点击更多链接时,整个段落应该显示并编辑文本"更多"到"更少",点击"更少"时应该切换行为。段落是动态生成的,我无法使用.wrap()包装其中的内容。下面是我所拥有和想要的示例。
这就是我所拥有的:
<p>It is a long established fact that a reader will be distracted by the readable
content of a page when looking at its layout. The point of using Lorem Ipsum is that
it has a more-or-less normal distribution of letters, as opposed to using 'Content
content here', making it look like readable English. Many desktop publishing packages
and web page editors now use Lorem Ipsum as their default model text.</p>
当DOM加载时,这就是我想要的
<p>It is a long established fact that a reader will be distracted by ..More</p>
当用户点击"更多"时,这就是我想要的
<p>It is a long established fact that a reader will be distracted by the readable
content of a page when looking at its layout. The point of using Lorem Ipsum is that
it has a more-or-less normal distribution of letters, as opposed to using 'Content
content here', making it look like readable English. Many desktop publishing packages
and web page editors now use Lorem Ipsum as their default model text. ..Less</p>
当我们点击"更少"时,它应该恢复点击"更多"时所做的事情。
我使用jQuery将子字符串拆分、切片并包装到我想要隐藏的span中,但这不起作用。
var title = $("p").text();
var shortText = jQuery.trim(title).substring(100, 1000).split(" ")
.slice(0, -1).join(" ") + "...More >>";
shortText.wrap('</span>');
Fiddle:http://jsfiddle.net/iambriansreed/bjdSF/
jQuery:
jQuery(function(){
var minimized_elements = $('p.minimize');
var minimize_character_count = 100;
minimized_elements.each(function(){
var t = $(this).text();
if(t.length < minimize_character_count ) return;
$(this).html(
t.slice(0,minimize_character_count )+'<span>... </span><a href="#" class="more">More</a>'+
'<span style="display:none;">'+ t.slice(minimize_character_count ,t.length)+' <a href="#" class="less">Less</a></span>'
);
});
$('a.more', minimized_elements).click(function(event){
event.preventDefault();
$(this).hide().prev().hide();
$(this).next().show();
});
$('a.less', minimized_elements).click(function(event){
event.preventDefault();
$(this).parent().hide().prev().show().prev().show();
});
});
这不是谷歌的热门结果,但我使用jQueryExpander插件取得了巨大成功。这很好,因为它不会对搜索引擎机器人隐藏任何东西。
感谢@iambrinansreed的出色功能,这里对换行符上的截断段落进行了轻微修改:
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
jQuery(function(){
var minimized_elements = $('p.minimize');
var maxLines = 20;
minimized_elements.each(function(){
// var textArr = $(this).text().split(/'n/); // Not supported in IE < 9
var textArr = $(this).html().replace(/'n?<br>/gi,"<br>").split(/<br>/);
var countLines = textArr.length;
if (countLines > maxLines) {
text_less = textArr.slice(0, maxLines).join("<br>");
text_more = textArr.slice(maxLines, countLines).join("<br>");
}
else return;
$(this).html(
text_less + '<span>... </span><a href="#" class="more">More</a>'+
'<span style="display:none;">'+ text_more +' <a href="#" class="less">Less</a></span>'
);
});
$('a.more', minimized_elements).click(function(event){
event.preventDefault();
$(this).hide().prev().hide();
$(this).next().show();
});
$('a.less', minimized_elements).click(function(event){
event.preventDefault();
$(this).parent().hide().prev().show().prev().show();
});
});
</script>
看起来是其他几个人打败了我,但这是我的想法。
var MORE = "... More...",
LESS = " Less...";
$(function(){
$("p").each(function(){
var $ths = $(this),
txt = $ths.text();
//Clear the text
$ths.text("");
//First 100 chars
$ths.append($("<span>").text(txt.substr(0,100)));
//The rest
$ths.append($("<span>").text(txt.substr(100, txt.length)).hide());
//More link
$ths.append(
$("<a>").text(MORE).click(function(){
var $ths = $(this);
if($ths.text() == MORE){
$ths.prev().show();
$ths.text(LESS);
}
else{
$ths.prev().hide();
$ths.text(MORE);
}
})
);
});
});
您看过jQuery Truncator插件吗?
它几乎和你描述的一模一样。
对于所有来这里搜索更多节目的人。。。这是另一个插件http://viralpatel.net/blogs/dynamically-shortened-text-show-more-link-jquery/
相关文章:
- 显示放大镜弹出窗口时隐藏导航内容
- 打开/关闭按钮以显示/隐藏内容
- 用HTML在不同屏幕上显示和隐藏内容的方法
- 使用angularjs ng Show/ng hide显示和隐藏不同的内容
- 使用jQuery选项卡来显示或隐藏其他内容
- 在开始时隐藏FX.slide内容,而不是在单击后隐藏
- 显示/隐藏有关模型更改的指令内容
- 在python中,我如何才能恢复被隐藏的元素的内容
- jQuery在5秒钟后隐藏/删除DIV内容
- 根据单元格内容隐藏/取消隐藏行
- 根据其他分区的内容隐藏分区
- 根据发送的输入内容隐藏/显示表单
- 根据在“搜索表单”中键入的内容隐藏和显示表行
- 根据下拉列表中选择的内容隐藏和显示 HTML 元素
- 根据特定的 html 标记内容隐藏父元素
- 如何根据 Div ID 内容隐藏/显示 DIV
- 动态内容隐藏在Angular引导手风琴中
- jQuery根据表内容隐藏行
- 基于URL字符串的内容隐藏内容
- 停止内容隐藏在导航栏下,当用户滚动