[Button] Text Here [/Button] などのコードを次のようなものに置き換える必要がある次の jQuery スニペットがあります。
<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);
});
私が抱えている問題は、タグ [ボタン] [/ボタン] とは関係のないページ上の他の要素を置き換え続けることです。たとえば、次のとおりです。
<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>