0

別の div にテキストをオーバーフローさせたいので、Stackoverflow の別の質問からこの回答を見つけて使用しました。

問題は、プレーン テキストしか表示されないことです。リンク、太字/斜体、段落は無視されます。

これは答えと同じjsfiddleですが、htmlタグが追加されています。それらを表示するにはどうすればよいですか?

コード:

var currentCol = $('.col:first');
var text = currentCol.text();
currentCol.text('');
var wordArray=text.split(' ');

$.fn.hasOverflow = function() {
   var div= document.getElementById( $(this).attr('id') ); 
   return div.scrollHeight>div.clientHeight;
};

for ( var x = 0; x < wordArray.length; x++ ) {
    var word = wordArray[x];
    currentCol.append(word+' ');
    if ( currentCol.hasOverflow() ) {
        currentCol = currentCol.next('.col');
    }
}

ヒントやアドバイスをいただければ幸いです:)

4

1 に答える 1

0

jQuery.textメソッドはプレーン テキストのみを返します。.html代わりに使用してみてください。
例:

var text = currentCol.html();

ただし、タグにスペースが含まれている場合 ( など<span class="some-class">)、コードの次の行はテキストを台無しにします。

var wordArray=text.split(' ');

あなたはそれをに変更したいかもしれません

text = text.replace(/ (?![^<>]*>)/gi, '%^%');
var wordArray = text.split('%^%');

これは一種の回避策です。各正規表現の一致を反復処理し、すべてのスペース文字でそれを部分文字列にすることができますが、組み合わせを使用した上記のアイデア%^%ははるかに単純です。これらの 3 つの記号は、必要なものに置き換えることができます。他の目的では使用されないほどユニークだと思いました。上記の正規表現は簡略化されており、テキストでand記号を
使用しないことを前提としています。 実際にそうする場合は、とにかくそれらをandに置き換えることをお勧めします。<>
&lt;&gt;

于 2013-10-10T08:42:34.193 に答える