2

単純なwhileループが正しく機能していません。テキストを3行に制限するためのスクリプトを作成します。とても簡単です。要素の高さ(div)が3行(ハードコードされたフォントサイズと行の高さ)より高いかどうかを確認し、高い場合は、最後の単語を削除して省略記号を追加します。そして、私は文字列が3行に収まるのに十分な時間でそれを行っています。

ランダムに動作している場合もあれば、動作しない場合もあります。動作していない場合は、4行目に1つの単語しかありません。したがって、毎回ではなく、最後の反復のみをスキップします。

$('div.prod-description').each(function(){
    var obj = $(this);

    if(obj.height() > 60) { // line-height: 18px;
        var ellipses = '...';
        var new_text = null;
        while(obj.height() > 60) {
            new_text = obj.text().slice(0, obj.text().lastIndexOf(' '));
            obj.text(new_text+ellipses);
        }
    }
});

を削除しようとしましたif statement、で試しましdo while statementたが、同じです。

編集:私は問題を見つけました!しかし、それを修正する方法がわかりません。ブラウザのアドレスバーでEnterキーを押すか、メニューからページにアクセスすると、正常に機能しています。更新するとF5、最後の反復がスキップされます。何か案は?

4

1 に答える 1

1

幸運にも、F5でページを更新した場合にのみスクリプトが正しく機能しないことがわかった後、解決策を見つけました。 https://stackoverflow.com/a/8310308/1333512

この問題を修正するには、次を使用します。

$(window).load(function() {});

代わりに:

$(document).ready(function() {});
于 2012-08-16T11:25:11.100 に答える