首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >angular指令jquery.dotdotdot,如何‘动画’截断?

angular指令jquery.dotdotdot,如何‘动画’截断?
EN

Stack Overflow用户
提问于 2014-02-08 06:05:04
回答 1查看 707关注 0票数 0

我正在使用angular从jquery.dotdotdot插件中生成一个指令。我做了一个“多读”或“少读”链接,在文本后切换截断。因为我将指令限制为attribute,所以可以在许多项上使用它,但在我的示例中,我在多行文本上使用它。这种切换是通过在点选项中设置的回调来实现的,如下所示。为了让它看起来更流畅,并提供更多的反馈,我试图放慢或动画截断和非截断之间的转换。实际的截断是有效的。

代码语言:javascript
复制
callback: ->
    $(element).find(".read-more").click (e) ->
        e.preventDefault()
        $(element).trigger "destroy.dot"
        $(element).append '<a href="" class="read-less">...Read less</a>'

        $(element).find(".read-less").click (e) ->
            e.preventDefault()
            $(element).find(".read-less").remove()
            truncate()

我尝试了在元素和元素的父元素(表中的td )上使用.css方法的变体,更改了高度的“转换”,但不起作用。有没有更好的整体方法?如果不是,那么我当前的方法做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2014-10-25 04:20:25

我遇到了同样的问题,我想我应该分享我的解决方案(常规的javascript而不是咖啡脚本):

代码语言:javascript
复制
// 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');
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21638637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档