3

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

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

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

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

^这是一回事,另外一件事是,如果您知道如何在显示更多但在文本上时添加 [...]。一直试图弄清楚但不得不寻求一点帮助,我是 jquery 的新手。

谢谢!

4

5 回答 5

6

更新你的 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/

于 2012-09-02T21:58:38.290 回答
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");
});​

演示

于 2012-09-02T21:57:15.510 回答
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");
    }
});

更新 的小提琴

于 2012-09-02T22:01:30.947 回答
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/

于 2012-09-02T22:22:00.140 回答
0

我想推荐Jquery more less 库,它可以解决“显示更多”“显示更少”问题。

另一种选择:cmtextconstrain

于 2013-06-11T16:25:49.540 回答