使用JQuery显示更多显示更少

使用JQuery显示更多显示更少,jquery,html,css,Jquery,Html,Css,我想使用JQuery显示更多/更少。我用谷歌搜索了几个例子,但都没用。没什么特别的,我只需要一段文字被剪切到一个特定的高度,一个链接将扩展/隐藏额外的文字。未经测试,但应该可以: <div style="height:500px;overflow:hidden" id="blah"> Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello

我想使用JQuery显示更多/更少。我用谷歌搜索了几个例子,但都没用。没什么特别的,我只需要一段文字被剪切到一个特定的高度,一个链接将扩展/隐藏额外的文字。

未经测试,但应该可以:

<div style="height:500px;overflow:hidden" id="blah">
Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.Hello Hello Hello.
</div>
<a href="#" id="showmore">Show more</a>
<script>
$("#showmore").live('click', function() {
   $("#blah").css('height','1000px');

});
</script>

喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂。
$(“#showmore”).live('单击',函数()){
$(“#blah”).css('height','1000px');
});

这应该通过单击实际div来切换完整div的显示,您可以将click事件添加到您想要的任何触发器中

HTML:

<div id="blah">
    Long...Content
</div>
$('#blah').css({height:'20px', overflow:'hidden'});
$('#blah').on('click', function() {
    var $this = $(this);
    if ($this.data('open')) {
        $this.animate({height:'20px'});
        $this.data('open', 0);

    }
    else {
        $this.animate({height:'100%'});
        $this.data('open', 1);
    }
});

最初使用javascript显示less不会无限期地隐藏未启用javascript的用户的div。

快速脏样:

<style>
.collapsed {height:50px; overflow:hidden}
</style>

<script>
$(function() {
  $(".expander").click(function() { $("div").toggleClass("collapsed"); });
})
</script>
<div class="collapsed">LOTS AND LOTS OF TEXT LOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXTLOTS AND LOTS OF TEXT</div>
<span class="expander">Expand/Collapse</span>

.折叠{高度:50px;溢出:隐藏}
$(函数(){
$(.expander”)。单击(函数(){$(.div”).toggleClass(“折叠”);});
})
很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多很多大量的文本大量的文本大量的文本大量的文本大量的文本大量的文本大量的文本大量的文本
展开/折叠

我的解决方案有点不同

  function SetMoreLess(para, thrLength, tolerance, moreText, lessText) {
        var alltext = $(para).html().trim();

        if (alltext.length + tolerance < thrLength) {
            return;
        }
        else {
            var firstHalf = alltext.substring(0, thrLength);
            var secondHalf = alltext.substring(thrLength, alltext.length);

            var firstHalfSpan = '<span class="firstHalf">' + firstHalf + '</span>';
            var secondHalfSpan = '<span class="secondHalf">' + secondHalf + '</span>';
            var moreTextA = '<a class="moreText">' + moreText + '</a>';
            var lessTextA = '<a class="lessText">' + lessText + '</a>';

            var newHtml = firstHalfSpan + moreTextA + secondHalfSpan + lessTextA;

            $(para).html(newHtml);
        }
    }
函数SetMoreLess(段落、长度、公差、moreText、lessText){
var alltext=$(para.html().trim();
if(所有文本长度+公差<长度){
返回;
}
否则{
var firstHalf=alltext.substring(0,thrllength);
var secondHalf=alltext.substring(thrllength,alltext.length);
var firstHalfSpan=''+firstHalf+'';
var secondHalfSpan=''+secondHalf+'';

var moreTextA='。

您可以或多或少地使用jQuery。您可以在这里看到一个使用此插件的


它在不拼接文本html内容的情况下或多或少地添加内容。

不切换,他想扩展/隐藏,而不仅仅是扩展。是的,这很管用,但我也希望它缩小。我试过了,但根本不管用。谢谢!在FF和Safari中都管用。我修改了它,使它成为你点击的链接。害怕在IE7/8中测试;)真的!我意识到了这一点当我要求一些简单的东西时,我需要一些不那么简单的东西,并发布了另一个问题。需要清楚地截断文本。很好的例子。一个小补充:你应该使用
var$this=$(this);
。这个答案中的链接似乎断开了。