截断第1号100字符和段落隐藏其余内容,以显示与更多/更少链接/隐藏其余contenct(Trunc

2019-06-14 19:05发布

我有拥有超过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分割,切片,敷到子跨度,我想隐藏,但不起作用。

var title = $("p").text();
var shortText = jQuery.trim(title).substring(100, 1000).split(" ")
    .slice(0, -1).join(" ") + "...More >>";
shortText.wrap('</span>');

Answer 1:

小提琴: 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();    
    });

});​


Answer 2:

这不是一个顶级谷歌的结果,但我已经使用了jQuery的扩展插件,取得了巨大成功。 因为它没有隐藏搜索引擎机器人东西真的很高兴。



Answer 3:

由于@iambriansreed他不错的功能,这里有一个轻微的修改,以截断在线breakes段落

<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>


Answer 4:

它看起来像其他几个人打我,但这里是我想出了。

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);
                }
            })
        );
    });
});


Answer 5:

你看的jQuery的截断器插件?

它几乎做你所描述什么。



Answer 6:

大家谁到这里来寻找节目更多...这里是另一个插件http://viralpatel.net/blogs/dynamically-shortened-text-show-more-link-jquery/



文章来源: Truncate paragraph first 100 character and hide rest content of paragraph to show/hide rest contenct with more/less link