有没有什么简单的方法可以把count
href 放在一边
期待这样的结果
<li><a id="{ID}" class="item" href="#">London</a>(25)</li>
演示 http://jsfiddle.net/aKEDJ/15/
非常感谢任何建议
有没有什么简单的方法可以把count
href 放在一边
期待这样的结果
<li><a id="{ID}" class="item" href="#">London</a>(25)</li>
演示 http://jsfiddle.net/aKEDJ/15/
非常感谢任何建议
像这样?
var listr = "<li> <a href='#' class=\"item\" id=\"{ID}\">{DATA}</a>({COUNT})</li>";
//Code follows
strhtml = strhtml.replace(/{COUNT}/, jsonStr[i].count)
这呈现为:
<li> <a href="#" class="item" id="4">Moscow</a>(12)</li>
就个人而言,我会对您的函数进行更大的重写,而不是我在下面放置的内容,以使您的 HTML 格式更容易一些。
下面函数中使用的每个变量都是var
d,我尽可能多地将逻辑移到循环之外。这应该(希望)使它更容易理解。
function insertData(NinCol, Colcount) {
var ul_format = "<ul id=\"{ID}\">{DATA} </ul>", // format of <ul>
li_format = "<li> <a href='#' class=\"item\" id=\"{ID}\">{NAME}</a>({COUNT})</li>", // format of <li>
re = /({ID})|({NAME})|({COUNT})/g, // single regex for formatting
re_function = function (id, name, count) { // generate replace function
return function (m, mid, mname, mcount) { // replace found item
return (mid && id) || (mname && name) || (mcount && count) || '';
};
},
html_str = "", i;
for (i = lastIndex; i < lastIndex + NinCol; ++i) {
html_str += li_format.replace( // apply all formatting
re,
re_function(i, jsonStr[i].name, jsonStr[i].count)
);
}
html_str = ul_format
.replace(/{ID}/, Colcount) // give <ul> it's id
.replace(/{DATA}/, html_str); // and add all <li>s
$('#destinations').append(html_str); // then append
lastIndex += NinCol;
}
在这里更新了小提琴。
另一种写作re
方式是/{(?:(ID)|(NAME)|(COUNT))}/g
您还需要考虑到您的代码很可能会产生非唯一的id,这会使您的 HTML 无效。