我有以下 jQuery 代码片段,它应该将 [Button] Text Here [/Button] 之类的代码替换为:
<a class="button">Text Here</a>
我拥有的javascript如下:
$(document).ready(function() {
var buttonStart = $("body").html().replace(/\[Button\]*/ig,'<a class="button">');
$("body").html(buttonStart);
var buttonEnd = $("body").html().replace(/\[\/Button\]*/ig,'</a>');
$("body").html(buttonEnd);
});
我遇到的问题是它不断替换我页面上与标签 [Button] [/Button] 无关的其他元素。例如:
<div id="MiddleBarLeft"></div>
也被替换成
<a class="button"><div id="MiddleBarLeft"></div></a>
我上面的正则表达式不应该只查找 [Button] 和 [/Button] 标签吗?
另外,有没有其他有效的方法来解决这个问题?
谢谢
======================
更新..这是我的整个 HTML 文件,它替换了与我要替换的内容无关的元素
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type='text/javascript'>
$(document).ready(function() {
var buttonStart = $("body").html().replace(/\[Button\]/ig,'<a class="button">');
$("body").html(buttonStart);
var buttonEnd = $("body").html().replace(/\[\/Button\]/ig,'</a>');
$("body").html(buttonEnd);
});
</script>
<style>
li{
list-style:none;
padding-top:10px;
padding-bottom:10px;}
.button, .button:visited {
background: #222 url(overlay.png) repeat-x;
display: inline-block;
padding: 5px 10px 6px;
color: #fff;
text-decoration: none;
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
-moz-box-shadow: 0 1px 3px rgba(0,0,0,0.6);
-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.6);
text-shadow: 0 -1px 1px rgba(0,0,0,0.25);
border-bottom: 1px solid rgba(0,0,0,0.25);
position: relative;
cursor: pointer
}
</style>
</head>
<body>
<div>
<ul>
<li>[Button]Test[/Button]</li>
<li></li>
<li>Sample Text</li>
</ul>
</div>
</body>
</html>