use*_*846 6 javascript jquery html5
我想在仅传递X个字符数量时,将"显示更多"链接(如果点击将显示已修剪/隐藏的内容)附加到我的段落.
例如,我将最小值设置为120个字符,而段落只有60个,因此我不需要附加"显示更多"链接.
我该如何解决?下面的代码效果很好但是会对我所拥有的任何段落应用"显示更多",即使它少于X量.我该怎么办?
https://jsfiddle.net/vm0uj7fc/1/
var charLimit = 122;
function truncate(el) {
var clone = el.children().first(),
originalContent = el.html(),
text = clone.text();
el.attr("data-originalContent", originalContent);
clone.text(text.substring(0, charLimit) + "...")
el.empty().append(clone);
}
function reveal(el) {
el.html(el.attr("data-originalContent"));
}
$("a").on("click", function (e) {
e.preventDefault();
var truncateElement = $(this).parent().prev().find(".truncate");
if ($(this).text() === "Read More") {
$(this).text("Read Less");
reveal(truncateElement);
} else {
$(this).text("Read More");
truncate(truncateElement);
}
});
$(".truncate").each(function () {
truncate($(this));
});
Run Code Online (Sandbox Code Playgroud)
回顾一下:
我编写了一个处理您请求的纯 javascript,请参阅此处的演示:https : //jsfiddle.net/IA7medd/751sLn0n/
HTML:
<div class="container">
<div class="events-left-col">
<h2 class="eventTitle">Event Title</h2>
<div class="wrap">
<div class="truncate">
<p class="toggledText">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam,
quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo
consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto
odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait
nulla facilisi.
</p>
</div>
</div>
<div class="wrap">
<div class="truncate">
<p class="toggledText">
Not enough characters here to show/append the "Read more" link
</p>
</div>
</div>
<div class="wrap">
<div class="truncate">
<p class="toggledText">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam,
quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo
consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto
odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait
nulla facilisi.
</p>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
风格:
.toggledText span.trimmed{
display:none;
}
.read-more .more:before{
content:'Read More';
}
.showAll .toggledText span.morePoints{
display:none;
}
.showAll .toggledText span.trimmed{
display:inline;
}
.showAll .read-more .more:before{
content:'Read Less';
}
Run Code Online (Sandbox Code Playgroud)
脚本:
var charLimit = 120;
var numberOfToggled = document.getElementsByClassName('toggledText');
for(i=0; i<numberOfToggled.length; i++){
var el = numberOfToggled[i];
var elText = el.innerHTML.trim();
if(elText.length > charLimit){
var showStr = elText.slice(0,charLimit);
var hideStr = elText.slice(charLimit);
el.innerHTML = showStr + '<span class="morePoints">...</span> <span class="trimmed">' + hideStr + '</span>';
el.parentElement.innerHTML = el.parentElement.innerHTML + "<div class='read-more'><a href='#' class='more'></a>";
}
}
window.onclick = function(event) {
if (event.target.className == 'more') {
event.preventDefault();
event.target.parentElement.parentElement.classList.toggle('showAll');
}
}
Run Code Online (Sandbox Code Playgroud)
我还对您的代码进行了一些编辑,效果很好。你可以在这里看到它:https : //jsfiddle.net/IA7medd/j78L76qj/(如果你有的话)
归档时间: |
|
查看次数: |
1300 次 |
最近记录: |