4 に答える
javascript を使わずに css を使って処理できます。文字列が幅を超えた場合text-overflow
の効果を作るためのcssがあります。...
元のテキストを表示したい場合は:hover
、css を追加してオーバーフロー境界を削除します。
別の方法は、javascript を使用してコンテンツの長さを数え、省略記号でコンテンツを変更することです。また、元のテキストを表示したい場合は、使用hover()
しますが、最初に元のテキストを保存する必要があります。
したがって、2つの解決策があります。詳細については、これを確認してください: http://jsfiddle.net/zqfhx/1/
CSS
<style type="text/css">
.w100C {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 100px;
min-width: 0;
}
.w100C:hover {
overflow: none;
width: auto;
}
</style>
HTML
<div class="w100C">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever s
</div>
Javascript(jQuery)による代替方法
JavaScript
$(document).ready(function() {
function TruncateText(text)
{
if(text.length > 12)
{
text = txt.substring(0,12) + "...";
}
return text;
}
var txt = $("#abc").text();
$("#abc").attr("orgTxt", txt);
txt = TruncateText(txt);
$("#abc").text(txt);
$("#abc").hover(function(){
var t = $("#abc").attr("orgTxt");
$("#abc").text(t);
}, function(){
var t = $("#abc").text();
t = TruncateText(t);
$("#abc").text(t);
});
});
HTML
<div id="abc">I am very long string</div>
個人的には、JavaScript の代わりに CSS を使用することをお勧めします。これは、スタイルを設定してスクリプトの実行を減らすことで複数の要素を処理できるためです。
これはjQueryを必要としません
var str = "whatever here"
var shortened = str.length > 15 ? str.substring(0,12) + '...' : str;
コンテンツが id "content" の div 内にあり、文字列が longString 変数内に保存されていると仮定します
$(document).ready(function() {
var contentDiv = $("#content");
contentDiv.html(longString.substr(0,12) + "...");
contentDiv.mouseover(function(){
this.html(longString);
});
contentDiv.mouseout(function(){
this.html(longString.substr(0,12) + "...");
});
});
これはテストされていませんが、必要な表示と非表示の機能が提供されるはずです。また、文字列は常に 12 文字以上であると想定しています。エラー チェックが必要な場合は、簡単に追加できます。