4

タイトルに5語の後に挿入しようとして<br />いますが、使用しているコードが機能しません。下記を参照してください:

$("#post-id > h2").each(function() {
    var html = $(this).html().split(" ");
    html = html[0] + "<br />" + html.slice(1).join(" ");
    $(this).html(html);
});

この関数はそのままでうまく機能します-最初の単語<br />の後にタグを追加したい場合。しかし、それを変更すると、正しく機能しません。html.slice(5)

これを修正して、5ワード後に正常に機能するようにするにはどうすればよいですか?それとも、別のアプローチがより適切でしょうか?よろしくお願いします!

4

3 に答える 3

7
$("#post-id > h2").each(function() {
     var html = $(this).html().split(" ");
     html = html.slice(0,5).join(" ") + "<br />" + html.slice(5).join(" ");
     $(this).html(html);
});​

http://jsfiddle.net/f4chL/

基本的な考え方は、インデックス0からスライスして最初の5ワードを取得し、配列の5つの要素を取得して結合し、ブレークタグを追加してから、インデックス5の配列の残りの要素を取得することです(ゼロベースのインデックスとして)スペースでそれらを結合し、最後にそれをダンプします

編集

完全な答えのために、そしてOPが5ワードごとに分割したい場合は、別の方法があります

$("h2").each(function() {
var html = $(this).html().split(" ");
var newhtml = [];

for(var i=0; i< html.length; i++) {

    if(i>0 && (i%5) == 0)
        newhtml.push("<br />");

    newhtml.push(html[i]);
}

$(this).html(newhtml.join(" "));
});​

http://jsfiddle.net/2Z2nM/

于 2012-10-23T13:03:14.337 に答える
5

コードを次のように単純化できます。

.replace(/((\w+\W+){5})/, '$1<br/>')

このFIDDLEを参照してください。単語の定義に応じて、\w+を自分に合ったものに変更できます。

于 2012-10-23T13:09:36.117 に答える
-1

コードを次のように置き換えます。

$(".map .tooltip-inner > h2").each(function() {
    var html = $(this).html().text();
    var result = html.replace(/\ /g,'<br/>'); 
    $(this).html(result);
});
于 2012-10-23T13:05:37.923 に答える