行き詰まっています。おそらく、正規表現を使用するより良い方法があります(あなたの考えを聞くなど)。
1回限りの場合、次のように機能します。たとえば、-link-と言ってください。
var testHtmlStr = '<tr>' +
'<td class="eve"><div class="pad" style="overflow:hidden;">' +
'<a href="#" class="pic"><img height="50" width="80" title="{%desc%}" alt="{%desc%}" src="{%image%}"></a>' +
'<div class="sum"><a href="{%link%}" class="url">{%name%}</a></div>' +
'{%star_rating_html%}' +
'<a href="#" class="gray">{%eventC%}</a>' +
'<span class="block">{%evenC%}</span>' +
'</div></td>' +
'<td class="mor"><div class="pad"><a class="mor" href="{%link%}">{%linkName%}</a>' +
'</div></td>' +
'</tr>';
var ss = 'link';
var syntax = new RegExp('(^|.|\r|\n)(\{%\s*(' + ss + ')\s*%\})',"gi");
alert(testHtmlStr.replace(syntax, '$1TESTESTESTESTS'));
以下は私のコードですが、機能しません。理由がわかりません。同じ正規表現、同じhtmlテンプレートパターン。また、私の.eachは文字列を介して繰り返しますが、繰り返すたびに文字列は変更されていない状態に戻るようです。基本的に、{%somehashkey%}のようなhtml文字列が何であれ、対応するハッシュ値に置き換えたいと思います。私は自分のコードが機能するだろうと思ったが、何が悪いのか理解できない。何かがおかしい、私はそれを知っています。私はそれを追い詰めることができません。あなたの考え?
(function($){
var testHTML2 = '<tr>' +
'<td class="eve"><div class="pad" style="overflow:hidden;">' +
'<a href="#" class="pic"><img height="50" width="80" title="{%desc%}" alt="{%desc%}" src="{%image%}"></a>' +
'<div class="sum"><a href="{%link%}" class="url">{%name%}</a></div>' +
'{%rating%}' +
'<a href="#" class="gray">{%eventC%}</a>' +
'<span class="block">{%evenC%}</span>' +
'</div></td>' +
'<td class="mor"><div class="pad"><a class="mor" href="{%link%}">{%linkName%}</a>' +
'</div></td>' +
'</tr>';
var type = "yahoo";
var disp = {};
disp.eventC = '5';
disp.rating = "<div>rating here</div>";
switch (type) {
case 'yahoo':
disp.link = 'http://www.yahoo.com';
disp.image = 'SOMe IMAGE' ;
disp.name = "VENICE BEACH";
disp.desc = 'MORE INFO ';
disp.linkName = 'YAHOO';
break;
default:
disp.link = 'http://www.google.com';
disp.image = 'Some IMAGE';
disp.name = "BABY BABY";
disp.desc = 'MORE INFO YOYOYO';
disp.linkName = 'GOOGLE';
}
$.each( disp, function(t, num){
var syntax = new RegExp('(^|.|\r|\n)(\{%\s*(' + t + ')\s*%\})',"gi");
testHTML2.replace(syntax, num)
});
alert(testHTML2);
})(jQuery);