我卡住了。也许正则表达式有更好的方法(喜欢听听你的想法)。
如果我只是在做一件事,比如-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);