質問

私は本当に考えています jQueryExpanderプラグイン 素晴らしいですが、私のニーズを満たすことはできません。テキストをカットし、テキストを展開するテキストの後に「続きを読む」ボタンを配置します。ただし、テキストの長さが指定された値以上の場合にのみ削減されます。しかし、テキストが次の場合はどうなりますか:

Some text:




Blah blah

テキストは、多くのキャラクターを持つテキストと同じくらいのスペースを使用しますが、エキスパンダーはそれを遮断しません。テキストの長さと最大行の両方を制限できるように、Max Linesプロパティが必要です。プラグインの提案はありますか?

役に立ちましたか?

解決

私はこのjQueryを構築しました。これは、Fudgeyのリンクから部分的に取られています。残念ながら、divの高さを.height()と比較する必要があるため、EMの代わりにPXを使用します。また、機能に到達するのはきれいなかもしれませんが、それは機能します:)

$(document).ready(function () {
    var maxlines = 12;
    var lineheight = 15; // line height in 'px'
    var maxheight = (maxlines * lineheight);
    var allowedExtraLines = 3;
    var showText = "Læs mere...";
    var hideText = "Skjul tekst...";

    $('.Truncate').each(function () {
        var text = $(this);
        if (text.height() > maxheight + allowedExtraLines * lineheight) {
            text.css({ 'overflow': 'hidden', 'line-height': lineheight + 'px', 'height': maxheight + 'px' });

            var link = $('<a href="#">' + showText + '</a>');
            link.click(function (event) {
                event.preventDefault();

                if (text.css('height') == 'auto') {
                    $(this).html(showText);
                    text.css('height', maxheight + 'px');
                } else {
                    //$(this).remove();
                    $(this).html(hideText);
                    text.css('height', 'auto');
                }
            });

            var linkDiv = $('<div></div>');
            linkDiv.append(link);

            $(this).after(linkDiv);
        }
    });
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top