我遇到了同樣的問題,我想我會分享我的解決方案(常規的JavaScript,而不是coffescript):
// truncates truncatedTextSelector using dotdotdot; sets triggerSelector to an animated toggle of truncation; after toggle,
// updates triggerTextSelector within triggerSelector to hiddenText or shownText when truncated or fully shown, respectively
function toggleTextTruncation(truncatedTextSelector, triggerSelector, triggerTextSelector, hiddenText, shownText) {
// store truncated and auto heights before enabling dotdotdot
this.trunc_height = $(truncatedTextSelector).css('height');
this.auto_height = $(truncatedTextSelector).css({height:'auto'}).css('height');
// initialize to truncated
$(truncatedTextSelector).css({height: this.trunc_height}).dotdotdot();
$(triggerSelector).data('shown', false);
// on trigger, toggle shown or hidden
var obj = this;
$(triggerSelector).click(function(){
if ($(this).data('shown')) {
// animate truncated height and apply dotdotdot on complete
$(truncatedTextSelector).animate({height: obj.trunc_height}, {complete: function(){ $(this).dotdotdot() }});
$(this).find(triggerTextSelector).html(hiddenText);
$(this).data('shown', false);
} else {
// destroy dotdotdot and animate auto height
$(truncatedTextSelector).trigger('destroy').css({overflow:'hidden'}).animate({height: obj.auto_height});
$(this).find(triggerTextSelector).html(shownText);
$(this).data('shown', true);
}
})
// destroys functionality; must be used whenever involved elements are hidden and re-shown, since this breaks it
this.selfDestruct = function() {
$(triggerSelector).unbind('click');
$(truncatedTextSelector).css({height: this.trunc_height}).trigger('destroy');
}
}
動畫這將是困難的,主要是因爲截斷完成由字面改變文本。您必須通過克隆div來截斷,將其放在原始文件後面,截斷克隆,然後淡出原始文件。對我來說,參與答案的演示太少了。 –