我在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
答案 0 :(得分:1)
您可以使用前瞻性的正则表达式:
$(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;
答案 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;之前获取子串。并进行所有替换,然后将子线拼接在一起。