JSON:如何将JSON元素项放在不同的位置

时间:2013-06-15 23:08:59

标签: javascript jquery json

是否有任何简单的方法可以将count置于href之类,如

结果期待这样 <li><a id="{ID}" class="item" href="#">London</a>(25)</li>

DEMO http://jsfiddle.net/aKEDJ/15/

任何建议非常感谢

2 个答案:

答案 0 :(得分:2)

喜欢这个吗?

   var listr = "<li> <a href='#' class=\"item\" id=\"{ID}\">{DATA}</a>({COUNT})</li>";

   //Code follows
    strhtml = strhtml.replace(/{COUNT}/, jsonStr[i].count)

Demo

这呈现为:

<li> <a href="#" class="item" id="4">Moscow</a>(12)</li>

答案 1 :(得分:0)

就我个人而言,我会对你的功能进行更大的重写,而不是我在下面的内容,以便更轻松地格式化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;
}

更新了here的小提琴 另一种写re的方法是/{(?:(ID)|(NAME)|(COUNT))}/g

您还需要考虑您的代码可能会产生非唯一的 id ,这会使您的HTML无效。