问题是truncate.js以递归方式将$clipNode放在不同的容器中,如果截断标志不为true,则删除它们.您的方法的问题在于您附加到元素的前一个节点,在列出的项目的情况下是真的,但如果没有前一个项目则不是真的(如文本块的情况).这就是为什么在你的方法中它没有在文本块中插入任何东西.我已经按如下方式更改了代码,并在函数末尾添加了另一个append语句,这样一旦它完成附加$clipNode,它就会将$clipNode容器移动到前一个元素(如果有的话).
if ($clipNode.length) {
if ($.inArray(element.tagName.toLowerCase(), BLOCK_TAGS) >= 0) {
// Certain elements like
should not be appended to.$element.after($clipNode);
} else {
//edited this line to add prev()
//$element.append($clipNode)
$element.append($clipNode);
}
}
if ($rootNode.height() > options.maxHeight) {
if (child.nodeType === 3) { // text node
truncated = truncateTextContent($child, $rootNode,
$clipNode, options);
} else {
truncated = truncateNestedNode($child, $rootNode, $clipNode,
options);
}
}
if (!truncated && $clipNode.length) {
$clipNode.remove();
} else {
$element.prev().append($clipNode);
}
问题似乎已经解决了
另请参阅Plunker中的更新代码