2016-06-21 55 views
0

我想创建一个按钮名称Read More显示更多并且按下按钮显示较少

这将在单击时显示更多内容。当它显示内容时,按钮文本应该更改为Read less

$(".read-more a").on("click", function() { 
 
    var $link = $(this); 
 
    var $content = $link.parent().prev("div.text-content"); 
 
    var linkText = $link.text(); 
 

 
    $content.toggleClass("short-text, full-text"); 
 

 
    $link.text(getShowLinkText(linkText)); 
 

 
    return false; 
 
}); 
 

 
function getShowLinkText(currentText) { 
 
    var newText = ''; 
 

 
    if (currentText.toUpperCase() === "READ MORE") { 
 
    newText = "Read More"; 
 
    } else { 
 
    newText = "Read Less"; 
 
    } 
 

 
    return newText; 
 
}
div.text-container { 
 
    margin: 0 auto; 
 
    width: 75%; 
 
} 
 

 
.text-content{ 
 
    line-height: 1em; 
 
} 
 

 
.short-text { 
 
    overflow: hidden; 
 
    height: 2em; 
 
} 
 

 
.full-text{ 
 
    height: auto; 
 
} 
 

 
h1 { 
 
    font-size: 24px; 
 
} 
 

 
.read-more { 
 
    padding: 10px 0; 
 
    text-align: center; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="text-container"> 
 
    <div class="text-content short-text"> 
 
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
 
    At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
 
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
 
    </div> 
 
    <div class="read-more"> 
 
    <a href="#">Read More</a> 
 
    </div> 
 
</div>

有谁知道如何解决这个问题?

任何意见和/或帮助将非常感激。


(Here a jfiddle what I have tried)

回答

1

我更新了你的答案。请试试这个。 https://jsfiddle.net/4cgbLne4/12/

<div class="text-container"> 
    <div class="text-content short-text"> 
     Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
     At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
     Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
    </div> 
    <div> 
     <button href="#" class="read-more">Read More</button> 
    </div> 
</div> 

$(".read-more").on("click", function() { 
    var $link = $(this); 
    var $content = $link.parent().prev("div.text-content"); 
    var linkText = $link.text(); 

    $content.toggleClass("short-text, full-text"); 

    $link.text(getShowLinkText(linkText)); 

    return false; 
}); 

function getShowLinkText(currentText) { 
    var newText = ''; 
     alert(currentText) 
    if (currentText.toUpperCase() === "READ MORE") { 
     newText = "Read Less"; 
    } else { 
     newText = "Read More"; 
    } 

    return newText; 
} 

希望这会为你工作。

+0

非常感谢你的伟大答案,你真棒:) – Dan

+0

@丹:谢谢:) –

0

你可以试试这个

HTML

<div class="text-container"> 
    <div class="text-content short-text"> 
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
    sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
    </div> 
    <div class="read-more"> 
    <button>Read More</button> 
    </div> 
</div> 

jQuery的

$(".read-more button").on("click", function() { 

    var $content = $link.parent().prev("div.text-content"); 

    $content.toggleClass("short-text, full-text"); 

    if ($(this).text() == 'Read More') 
    $(this).text('Read Less'); 
    else 
    $(this).text('Read More'); 
    return false; 
}); 

Example Fiddle - UPDATED

+0

太感谢你了,但我需要它与按钮不与文本,所以阅读更多/读少应该是一个按钮,我怎么能这样做,你知道吗! – Dan

+0

我已经为你更新了答案。 –

0

有在切换更多文本错误:

$(".read-more a").on("click", function() { 
 
    var $link = $(this); 
 
    var $content = $link.parent().prev("div.text-content"); 
 
    var linkText = $link.text(); 
 
    $content.toggleClass("short-text, full-text"); 
 
    $link.text(getShowLinkText(linkText)); 
 
}); 
 

 
function getShowLinkText(currentText) { 
 
    var newText = ''; 
 

 
    if (currentText.toUpperCase() == "READ MORE") { 
 
     newText = "Read Less"; 
 
    } else { 
 
     newText = "Read More"; 
 
    } 
 

 
    return newText; 
 
}
.short-text{color:#000000} 
 
.full-text{color:#ff8800}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="text-container"> 
 
    <div class="text-content short-text"> 
 
     Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
 
     At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
 
     Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
 
    </div> 
 
    <div class="read-more"> 
 
     <a href="#">Read More</a> 
 
    </div> 
 
</div>

对于<button>获得通过.text()文本和设置文本由.html('text')

<input type="button"> GET文字.val(),并设置文字.val('text')

+0

非常感谢你,但我需要它与按钮不与文本,所以Read More/Read Less应该是一个按钮,我该怎么做,你知道吗! – Dan

+0

再次查看最后一行的答案 –

+0

我尝试了很多次,但仍然无法做到,谢谢我为什么在这里提出问题,能否帮我解决这个问题! – Dan

0

你只需要切换“更多” /在你的函数“少”:

function getShowLinkText(currentText) { 
    var newText = ''; 

    if (currentText.toUpperCase().trim() === "READ MORE") { 
     newText = "Read Less"; 
    } else { 
     newText = "Read More"; 
    } 
    return newText; 
} 

小提琴:https://jsfiddle.net/4cgbLne4/5/

+0

非常感谢你,但我需要它与按钮不与文本,所以阅读更多/阅读更少应该是一个按钮,我该怎么做,你知道! – Dan

0

只需添加一个令牌到这一点,并在标签上的点击改变条件

var token = 1; 
$(".read-more a").on("click", function() { 
    var $link = $(this); 
    var $content = $link.parent().prev("div.text-content"); 
    var linkText = $link.text(); 

    $content.toggleClass("short-text, full-text"); 

    $link.text(getShowLinkText(linkText)); 

     if(token == 1) 
    { 
     $(this).text("Read Less"); 
     token = 0; 
    } 
    else 
    { 
     $(this).text("Read More"); 
     token = 1; 
    } 

    return false; 
}); 

这里是jsFiddle

+0

谢谢,但我需要一个按钮,但正如我在问题中说的,当我试着用按钮什么都不工作https://jsfiddle.net/uzzimu/4cgbLne4/13/ – Dan

+0

你已经有了答案,但我仍然有刚刚完成上面的示例尽可能简单的代码供您参考[这里是JSFiddle](https://jsfiddle.net/4cgbLne4/14/)。有一个快乐的编码。 –

1

我通常解决它不使用JavaScript,

.text-container { 
 
    padding: 1em; 
 
    border: 3px double; 
 
    position: relative; 
 
    padding-bottom: 3em; 
 
} 
 
.text-container .read-more { 
 
    position: absolute; 
 
    bottom: .5em; 
 
} 
 
input.read-more-toggle { display: none; } 
 
.read-more span { display: block; color: red; cursor: pointer; text-decoration: underline; } 
 
.read-more span:last-child { display: none; } 
 
input:checked + .read-more span:last-child { display: block; } 
 
input:checked + .read-more span:first-child { display: none; } 
 
.text-content { 
 
    overflow: hidden; 
 
    line-height: 1.5; 
 
} 
 
.read-more + .text-content { 
 
    max-height: 3em; 
 
    transition: max-height 1s; 
 
} 
 
input:checked + .read-more + .text-content { 
 
    max-height: 50em; 
 
}
<div class="text-container"> 
 
    <input type=checkbox id=more-text-toggle-1 class=read-more-toggle /> 
 
    <label class="read-more" for="more-text-toggle-1"> 
 
    <span>read more</span> 
 
    <span>read less</span> 
 
    </label> 
 
    <div class="text-content short-text"> 
 
     Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
 
     At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
 
     Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
 
    </div> 
 
</div>