長い文章を省略して文末に「…」を付与したいのですが、省略はできても「…」が付きません。
原因が分かる方、教えていただけましたら嬉しいです。
【HTML】
<section class="textOverFlow">
<h1>タイトル</h1>
<p>本文本文本文本文本文本文本文
本文本文本文本文本文本文本文本文</p>
<p>本文本文本文本文本文本文本文
本文本文本文本文本文本文本文本文</p>
</section>
【CSS】
.textOverFlow{
width:500px;
height:400px;
overflow:hidden;
}
【jQuery】
jQuery(function($) {
$(’.textOverFlow’).each(function() {
var $target = $(this);
// オリジナルの文章を取得する
var html = $target.html();
// 対象の要素を、高さにautoを指定し非表示で複製する
var $clone = $target.clone();
$clone
.css({
display: ’none’,
position : ’absolute’,
overflow : ’visible’
})
.width($target.width())
.height(’auto’);
// DOMを一旦追加
$target.after($clone);
// 指定した高さになるまで、1文字ずつ消去していく
while((html.length > 0) && ($clone.height() > $target.height())) {
html = html.substr(0, html.length - 1);
$clone.html(html + "…");
}
// 文章を入れ替えて、複製した要素を削除する
$target.html($clone.html());
$clone.remove();
});
});
jQueryは下記のサイトに掲載されているものを使わせていただきました。
http://dev.classmethod.jp/ria/string-replace-css-and-jquery/
よろしくお願いします。
みんなの回答 5 件
すみません、補足です。
Firefoxだと「…」が表示されないようです。
クロームでは表示されました。
cssでtext-overflow: ellipsisという解決方法もあるかと
while 内で ... を足すのはおかしい。終わってからじゃないの?
求めておられる回答とは違うけど、
こういうの使うのはどう?日本語対応かわからんけども
Readmore.js: jQuery plugin for long blocks of text
http://jedfoster.com/Readmore.js/これでいけるんじゃない?
jQueryで文字列を特定の文字数でカットして末尾に「…」などを追加する方法 | BlackFlag
http://black-flag.net/jquery/20121010-4227.html関連するトピックス