html + css + jquery:切换显示更多/更少文本

时间:2012-09-02 21:53:12

标签: jquery toggle show

我正在开展个人项目,我遇到了一个小问题:

这是我的代码,目前有效:http://jsfiddle.net/gvM3b/

$(".show-more").click(function () {
    $(this).text("(Show Less)");
$(".text").toggleClass("show-more-height");
});​

问题是“(显示更多)”文本更改为“(显示更少)”但不会在需要时切换回来。

^这是一回事,如果你知道如何在文本中显示更多内容时添加[...],那么另外一件事就是。一直想弄清楚,但不得不寻求一些帮助,我是jquery的新手。

谢谢!

5 个答案:

答案 0 :(得分:5)

更新你的jQuery:

$(".show-more").click(function () {
    if($(".text").hasClass("show-more-height")) {
        $(this).text("(Show Less)");
    } else {
        $(this).text("(Show More)");
    }

    $(".text").toggleClass("show-more-height");
});

请参阅http://jsfiddle.net/gvM3b/1/

答案 1 :(得分:4)

使用三元运算符,例如:

$(".show-more").click(function () {
  var $this = $(this);
  $this.text($this.text() == "(Show Less)" ? "(Show More)" : "(Show Less)");
  $(".text").toggleClass("show-more-height");
});​

或使用带有函数的.text()

$(".show-more").click(function () {
  $(this).text(function (i, oldText) {            
    return oldText == "(Show Less)" ? "(Show More)" : "(Show Less)";      
  });
  $(".text").toggleClass("show-more-height");
});​

<强> DEMO

答案 2 :(得分:2)

像这样:

$(".show-more").click(function () {        
    $(".text").toggleClass("show-more-height");
    if(!$(".text").hasClass("show-more-height")){
        $(this).text("Show Less");
    }else{
        $(this).text("Show More");
    }
});

updated fiddle

答案 3 :(得分:0)

这是另一个解决方案:

var i = 0;   

$(".show-more").on('click', function() {
    $(this).text( ++i % 2 ? "(Show Less)" : "(Show More)" );
    $('.text').toggleClass("show-more-height");
});

小提琴:http://jsfiddle.net/gvM3b/6/

答案 4 :(得分:0)

我想推荐Jquery more less library来处理“显示更多”“减少显示”问题。

另一种选择:cmtextconstrain