Javascript:在 在<br>之后
Javascript: Add element to content before and after <br>
我已经搜索了几天,但我似乎没有找到一种方法来添加标签到<div>
内的文本。在
之前和<br>
之前和之后的文本中应该添加一个新的单独的标签。
原来的HTML代码是这样的:
<div id="my_div">
John Mike Smith Taylor<br>
Test Street 123<br>
00000 FL Miami<br>
US
</div>
应用Javascript/JQuery后,它应该是这样的:
<div id="my_new">
<a id="firstname">John Mike </a><a id="lastname">Smith Taylor</a><br>
<a id="street">Test Street 123</a><br>
<a id="zipcode">00000 </a><a id="state">FL </a>
<a id="city">Miami</a><br>
<a id="country">US</a>
</div>
我已经尝试了appendChild
到my_div
,但它在文本之后打开和关闭标签,而不是将标签添加到div
内的文本。
您可以使用RegExp与String.replace()
一起完成这项工作。
function formatContent(content) {
var ids = [
"firstname",
"lastname",
"street",
"zipcode",
"state",
"city",
"country"
];
var i = 0;
function _format (match, nbsp, br) {
return "<a id='"" + ids[i++] + "'">" + (br || match) + "</a>" + (br && "<br>" || "");
}
return content.replace(/(['w's]+ )|(['w's]+)<br>|(['w's]+)/g, _format);
}
$(function() {
$('#my_div').html(formatContent($('#my_div').html()));
});
参见JsFiddle: https://jsfiddle.net/ssvv7wrL/1/
尝试创建id为ids
的数组;使用.split()
和RegExp
参数 |<br>
创建文本text
数组;.map()
迭代数组text
;.replace()
从ids
添加id
,将<br>
,
添加回el
的文本,返回数组res
包含的文本为html
;在#my_div
上调用.html()
,参数为res
var ids = ["firstname"
, "lastname"
, "street"
, "zipcode"
, "state"
, "city"
, "country"];
var text = $("#my_div").html().split(/ |<br>/).filter(Boolean);
var res = text.map(function(el, i) {
return el.replace(/('w+.*)/
, "<a id=" + ids[i] + ">$1</a>"
+ (i === 1 || i === 2 || i === 5 ? "<br>" : " "));
});
$("#my_div").html(res);
console.log($("#my_div").html());
/*
<a id="firstname">John Mike </a><a id="lastname">Smith Taylor</a><br>
<a id="street">Test Street 123</a><br>
<a id="zipcode">00000 </a><a id="state">FL </a>
<a id="city">Miami</a><br>
<a id="country">US</a>
*/
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div id="my_div">
John Mike Smith Taylor
<br>Test Street 123
<br>00000 FL Miami
<br>US
</div>
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 在chrome.tabs.onCreated之后加载HTML页面
- 在Jquery detachment()和appendTo()之后定位元素
- AngularJS:ng之后,重复$scope值未按预期更新
- 为什么元素的宽度在页面加载之后和那一刻之后不同
- 没有在Angular应用程序中定义firebase(在firebase迁移之后)
- Javascript复选框函数:;缺少:在属性id之后"
- 在刚刚调用的append函数之后,jquery.height()不会返回实际值
- 正在链接添加了以下内容::在之后
- JQuery hide()在show()之后不起作用,反之亦然
- 未执行Ajax循环的Javascript之后的代码
- 如何在`window.open`之后执行回调
- 如何在一个元素动画之后延迟
- 在XMLHttpRequest之后重新初始化jQuery
- 如何停止CKEditor用<br>
- <text区域>在我的html中包含event.keycode==13之后,wrap就不起作用了
- 在jAlert之后设置焦点
- 在Javascript中的ajax响应之后未调用Dropdown事件
- web浏览器中的离线应用程序存储数据并在之后上传
- 目标全部<br>'s在前2个之后