2

我正在使用 jquery.dotdotdot 为文本部分创建阅读更多/阅读更少的链接。对于我有多个 p 标签的部分,文本不显示。不太确定是什么问题。我在下面的小提琴中包含了我的代码。

我很感激任何帮助!谢谢!

在此处查看完整代码

$(function () {
    var addLink = $('.securetext');
        addLink.append('<span class="readmore trigger-js">&nbsp;<a >Read more</a></span>');
        for (i = 0; i < addLink.length; i++) {
            if ($(addLink[i]).children("p").length > 0) {
                $(addLink[i]).children("p").last().append('<span class="readless trigger-js">&nbsp;<a >Read less</a></span>');
            } else {
                $(addLink[i]).append('<span class="readless trigger-js">&nbsp;<a >Read less</a></span>');
            }
        }
        truncateIfNeeded(); // Initialize ellipsis
    });

var truncateIfNeeded = function (jqueryTag) {
    var $selectionToTruncate = jqueryTag || $('.securetext');

    $selectionToTruncate.dotdotdot({
        ellipsis: '... ',
        watch: true,
        //wrap    : 'letter',
        height: 20 * 3, // max number of lines
        after: '.readmore',
        callback: function (isTruncated, orgContent) {
            var $currentReadMore = $(this).find('.readmore');
            var $currentReadLess = $(this).find('.readless');

            if (isTruncated) {
                $(this).addClass('securetext--is-truncated');
                $(this).removeClass('securetext--is-not-truncated');
            }
            bindReadMore(); // bind click on "read more"
        }
    });
};
4

1 回答 1

0

问题在于用于截断的算法。

在第一次迭代中,Read More...链接被添加到段落之后(恰好是 3 行长)。这意味着调用了截断逻辑。

在第二次迭代中,将Read More...添加到段落内。然后整个东西适合 3 行,所以它被删除了。这显然是一个错误。

在 GitHub 上描述该错误的问题已作为wontfix关闭。

此拉取请求提供了部分修复,但在元素在段落之间被截断的情况下不会显示省略号。(不过,阅读更多链接会显示出来。)

于 2015-04-20T06:22:29.520 回答