@SmokeyPhpの回答に加えて:
まず第一に、それは私を大いに助けた素晴らしい答えでしたが、そこには条件にいくつかの間違いがありました.
第二に、私は jQuery の代わりに jqlite ライブラリを使用しているため、その回答もその分野で非常に役立ちました (彼が使用したすべてのメソッドは jqlite ライブラリの一部でした)。
span または div 内の最後の可視単語を検出することに加えて、私の関数は残りのテキストを "..." に置き換えています。
私が使用しているコードを投稿しています。基本的には@SmokeyPhpが投稿したコードですが、必要に応じて修正されています。他の人がそれから恩恵を受けることを願っています:
function dotdotdot(containersToDotdotdot) {
function dotdotdotContainers(containers) {
for (var i = 0; i < containers.length; i++) {
var cntnr = $jq(containers[i]);
cntnr.html('<span>' + cntnr.html().replace(/ /g,'</span> <span>') + '</span>');
var words = Array.prototype.slice.call(cntnr.find("span"), 0).reverse();
var lastw = null;
for (var j = 0; j < words.length; j++) {
var w = $jq(words[j]);
var wbot = w.height() + w.offset().top;
var wleft = w.offset().left;
var wright = wleft + w.width();
if (wbot <= (cntnr.offset().top + cntnr.height()) && wleft >= (cntnr.offset().left) && wright <= (cntnr.offset().left + cntnr.width())) {
lastw = words.length - j - 1;
break;
}
}
cntnr.html(lastw === null || lastw === (words.length - 1) ? cntnr.text() : (cntnr.text().split(' ').slice(0, lastw).join(' ') + '...'));
}
}
if (containersToDotdotdot instanceof Array) {
for (var i = 0; i < containersToDotdotdot.length; i++) {
dotdotdotContainers($jq(containersToDotdotdot[i]));
}
} else {
dotdotdotContainers($jq(containersToDotdotdot));
}
}
ご覧のとおり、私の dotdotdot 関数は、dotdotdot に対するクラス/ID の配列、または単一のクラス/ID を取得できます。
$jq は、jQuery の $ を jqlite に置き換えたものです。
ありがとう@SmokeyPhp、jQueryをdotdotdotテキストに必要としない方法を長い間探していましたが、あなたの方法は素晴らしいです。