当我们的网站超过一定高度时,我试图将省略号附加到多个多行段落中。为此我使用jquery插件dotdotdot。
奇怪的是,当我刷新页面时它不起作用。它仅在我调整窗口大小后才起作用(然后它完美地工作)。我已经尝试将所有脚本放在我的html末尾,所以dotdotdot最后加载,但它仍然无法正常工作。有谁知道为什么会这样?
我正在使用dotdotdot的这些设置:
$(document).ready(function() {
$("p.article-content").dotdotdot(
{
/* The HTML to add as ellipsis. */
ellipsis : '...',
/* How to cut off the text/html: 'word'/'letter'/'children' */
wrap : 'word',
/* jQuery-selector for the element to keep and put after the ellipsis. */
after : null,
/* Whether to update the ellipsis: true/'window' */
watch : true,
/* Optionally set a max-height, if null, the height will be measured. */
height : null,
/* Deviation for the height-option. */
tolerance : 0,
/* Callback function that is fired after the ellipsis is added,
receives two parameters: isTruncated(boolean), orgContent(string). */
callback : function( isTruncated, orgContent ) {},
lastCharacter : {
/* Remove these characters from the end of the truncated text. */
remove : [ ' ', ',', ';', '.', '!', '?' ],
/* Don't add an ellipsis if this array contains
the last character of the truncated text. */
noEllipsis : []
}
});
});
相关的HTML是(它很难看,我知道,我还在尝试它):
<article class="article">
<div class="article-image"></div>
<h2>Title</h2>
<p class="date">December 19, 2012</p>
<p class="article-content">Lorem ipsum etc. (the actual content is larger)</p>
</article>
CSS:
article {
font-size: 99%;
width: 28%;
line-height: 1.5;
float: left;
margin-left: 8%;
margin-bottom: 3em;
text-align: justify;
}
article h2 {
font-size: 125%;
line-height: 0.5;
text-transform: uppercase;
font-weight: normal;
text-align: left;
color: rgba(0,0,0,0.65);
}
.date {
margin-top: 0.3em;
margin-bottom: 1em;
font-family: 'PT Sans';
color: rgba(0,0,0,0.5);
}
.article-image {
background-image: url(http://lorempixel.com/g/400/300/city/7);
width: 100%;
height: 13em;
overflow: hidden;
margin-bottom: 1.5em;
}
p.article-content {
font-family : 'PT Sans';
color : rgba(0,0,0,0.65);
margin-bottom : 0;
height : 7em;
overflow : hidden;
}
答案 0 :(得分:3)
有类似的问题。只需将dotdotdot初始化放在窗口加载eventhandler而不是dom ready。
答案 1 :(得分:2)
起初,使用dotdotdot似乎很容易。但是我也在包含大量内容的响应式页面中遇到了这个问题。文档准备好后,页面上的容器仍然会调整大小,因为内容正在填充。 在您的评论的帮助下,我的解决方案现在是:
$(document).ready(ellipsizeText); // Plugin must have been working flawles inhere as described in documentation.
window.setTimeout(ellipsizeText, 400); // Just for any case.
window.setTimeout(ellipsizeText, 800); // Maybe user didn't saw it flickering.
$(window).load(ellipsizeText); // Oh hell! the images are loading so not all containers are yet on their places. We wait on them..
function ellipsizeText()
{
$(".selectorForEllipsis").dotdotdot({
watch: true
});
}
我认为正确的解决方案是在更改位置或大小以更新dotdotdot时,将侦听器附加到每个带文本的容器,而不仅仅是窗口调整大小。也许使用Ben Alman yquery resize plugin
或者是否存在可以更好地处理此内容加载问题的插件?
答案 2 :(得分:0)
或者,只需将整个函数包装在.resize()
函数下即可。不是最优雅的解决方案,但它会起作用:
$(document).ready(function() {
$(window).resize(function()
{
$("p.article-content").dotdotdot(
{
// All your code goes here
});
}).resize();
// The second .resize() will fire when the document is ready (i.e. onload),
// therefore executing .dotdotdot() upon loading
});
[编辑]:
根据Kevin的建议,由于.dotdotdot()
已经监听了resize事件,你甚至不需要包装该函数。只需在文档准备好后使用$(window).resize()
启动事件。
答案 3 :(得分:0)
改变了 观看:“窗口” 至 看:真的
它开始为我工作了!