jQuery - 在特定单词

时间:2016-06-02 18:41:13

标签: jquery

我在div中有一串文字。我需要在文本“Foo”之前存在的所有“,”实例替换为< br>在“Foo”之后标记和离开以及“,”的实例。

我原以为.append()函数就足够了。但没有骰子。任何指导都会受到赞赏吗?

HTML

<div>Hello, you, Foo 1, 2, 3</div>
<div>Hello, you, Foo 1, 2, 3</div>

的jQuery

$(function() {
  $('div').each(function() {
    $(this).html(function() {
      return $(this).html().before("Foo").replace(/, /ig, "<br>");
    });
  });
});

最终结果应该是:

Hello
you
Foo 1, 2, 3

Hello
you
Foo 1, 2, 3   

3 个答案:

答案 0 :(得分:1)

您可以使用前瞻性的正则表达式:

&#13;
&#13;
$(function() {
  $('div').each(function() {
    $(this).html(
      $(this).html().replace(/, (?=.*Foo)/ig, '<br>')
    );
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>

<div>Hello, you, Foo 1, 2, 3</div>
<div>Hello, you, Foo 1, 2, 3</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

(function($)
{
    $('div').each(function()
    {
        var html = $(this).html();
        $(this).html(
            html.substring(0, html.indexOf("Foo")).replace(/,/g,'<br>')
            + html.substring(html.indexOf("Foo"))
        );
     });
})(jQuery);

这段代码对我有用。你的运气好吗?

答案 2 :(得分:0)

您可以使用此功能进行替换,并将其放在html生成函数中。

function replaceBefore(needle, replace, haystack, before) {
  var i = haystack.indexOf(before);
  var sub = haystack.substring(0, i);

  while (sub != sub.replace(needle, replace)) {
    sub = sub.replace(needle, replace);
  }

  return sub + haystack.substring(i);
}

然后调用该函数:

$(function() {
  $('div').each(function() {
    $(this).html(function() {
      return replaceBefore(', ', '<br>', $(this).html(), 'Foo');
    });
  });
});

基本上,在你的&#34; Foo&#34;之前获取子串。并进行所有替换,然后将子线拼接在一起。