場景的JavaScript/jQuery的 - 請切片段落文本內容
我有一個包含鏈接的描述錨標籤。如果描述包含超過100個字符,則將其分片爲僅包含從第一個字符到第100個字符的文本。我還會顯示一個省略號和一個更多鏈接,它會在點擊時顯示剩餘的內容。
的問題
切片時,剝離該內容中的鏈接。
我的想法/期望的結果
我使用jQuery的的.text()方法來獲取描述的精確長度,以保持整個切片的一致性。如果我想的正確,.text()只是抓住原始內容,這就是爲什麼錨標籤被剝離。但是,如果我使用.html()方法,則難以保持文本在(我需要)處切片的位置的一致性,因爲它會計算這些html標記及其屬性的字符。這是我堅持的地方。
最後,我想要一個方法來精確描述正確的描述,同時保持鏈接。我也會在每個頁面上有多個描述,所以我想要一種方法來展開和最小化單擊每個單獨的描述。
玩弄於CodePen:https://codepen.io/andrewgarrison/pen/BdJQGz/
$(document).ready(function() {
var minimized_elements = $('p.description');
var minimize_character_count = 99;
minimized_elements.each(function() {
var t = $(this).text();
if (t.length < minimize_character_count) return;
$(this).html(
t.slice(0, minimize_character_count)
+ '<span>... </span><a href="#" class="more">More</a>'
+ '<span style="display:none;">'
+ t.slice(minimize_character_count, t.length) + ' <a href="#" class="less">Less</a></span>'
);
});
$('a.more', minimized_elements).click(function (event) {
event.preventDefault();
$(this).hide().prev().hide();
$(this).next().show();
});
$('a.less', minimized_elements).click(function (event) {
event.preventDefault();
$(this).parent().hide().prev().show().prev().show();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3>Sliced Text</h3>
<p class="description">This product is super hot. You can go to <a href="http://www.someurlgoeshere.org">this awesome website</a> and order it right now! But wait, that's not all. If you buy three you get 20 more free. That's right. Buy now from <a href="#">here</a> and this could all be yours.</p>
謝謝!
您是否考慮過使用CSS隱藏比給定像素(或其他單位)寬度更寬/更高的任何東西?這樣你就不需要修改元素的實際內容了。 – nnnnnn
是的,我可能應該澄清,我截斷文本的原因是因爲我不希望'預覽'通過300px寬的div內的兩行,我將使用它。因此,我還需要將「更多」鏈接放在第二行,因爲我沒有空間放在下面。如果我這樣做,我肯定會使用基於CSS的方法。謝謝你的迴應和想法! –
使用.children('a')來抓取鏈接,然後在它們上面繪製鏈接數組和另一個錨文本。我想你會替換鏈接數組中的文本 –