我想要一個文本只有一定數量的字符/長度,並且在該長度之後,我想要放一個鏈接來顯示文本的全長。但不僅如此,我希望這個功能可以在多個文本字段中工作。在這種情況下,我使用Laravel,因此是刀片模板。在多個字段中隱藏/顯示特定長度內的更多文本
HTML /刀片:
@foreach ($statuses as $status)
<div class="status-body" data-body-status-id="{{ $status->id }}">
<div class="status-body-text status-body-text-{{ $status->id }}">{!! $status->body !!}</div>
</div>
<div class="btn-overflow btn-overflow-{{ $status->id }}" data-id-value="{{ $status->id }}">Show</div>
@endforeach
腳本:
var text = $('.status-body-text'),
btn = $('.btn-overflow'),
h = text[0].scrollHeight;
if(h > 45) {
btn.addClass('less');
btn.css('display', 'block');
}
btn.click(function(e)
{
e.stopPropagation();
if (btn.hasClass('less')) {
btn.removeClass('less');
btn.addClass('more');
btn.text('Hide');
text.animate({'height': h});
} else {
btn.addClass('less');
btn.removeClass('more');
btn.text('Show');
text.animate({'height': '45px'});
}
});
造型:
.btn-overflow {
display: none;
border-radius: 3px;
text-align: center;
width: 42px;
margin: 0 auto;
}
.status-body-text {
height:45px;
display:block;
overflow:hidden;
word-break: break-word;
word-wrap: break-word;
}
工作小提琴:https://jsfiddle.net/jmzqsc1r/1/
現在,您可以看到,預期的功能有效。顯示按鈕僅在.status-body-text
超過45像素,動畫很好等情況下才顯示。
問題是,此解決方案僅適用於頁面上的這些解決方案中的單個解決方案,而我的我可能有數百個這樣的頁面。如您所料,只有第一個.status-body-text
最初被隱藏(如果超過45px),並且顯示/隱藏按鈕會影響所有.status-body-text
字段。
我試圖解決這個問題是試圖實現數據屬性標識符,但我似乎無法找到一個好的解決方案。
標識符仍處於標記中,如btn-overflow-{{ $status->id }}
,它們的結尾編號與其對應的status-body-text-{{ $status->id }}
相同。
任何幫助,將不勝感激。
編輯:
Shiladitya的答案是有幫助的,但如果你減少第二個文本框的文本大小,它仍然顯示顯示按鈕。或者,如果您減小第一個文本框的大小,則顯示按鈕不會出現在第二個框中。像這樣:jsfiddle.net/jmzqsc1r/4
這不起作用。在你的代碼片段中,如果你減小第二個文本框的文本大小,它仍然會顯示Show按鈕。或者,如果您減小第一個文本框的大小,則顯示按鈕不會出現在第二個框中。像這樣:https://jsfiddle.net/jmzqsc1r/4/ –