基于json数据重新排序dom元素的最佳方法

时间:2010-02-11 16:46:45

标签: jquery json dom jtemplate

一旦我使用jtemplates创建基于json数据的dom元素,根据json数据的更改(排序,过滤等)重新排序这些元素的最佳方法是什么。

3 个答案:

答案 0 :(得分:1)

所以我现在用来解决这个问题的方法就是为每个模板化的html部分添加一个带编号的索引,如下所示:

<div id="list">
    <div id="items-start"></div>
    {#foreach $T as item}
    <div id="item-{$T.item$index}" class="item">
        ...lots of stuff...
    </div>
    {#/for}
</div>

然后在我的json项目中,我添加了一个名为InitialIndex的属性来跟踪哪个dom项与json中的每个项相关联。这样,在对json数据进行任何更改后,我可以调用这个简单的函数将更改应用到dom:

function applyListChanges(items) {
    $('.item').hide();
    for (var item in items) {
        var index = items[item].InitialIndex;
        $('#items-start').append($('#item-' + index));
        $('#item-' + index).show();
    }
}

如果您有更好的解决方案,请与我们联系。

答案 1 :(得分:1)

最干净的&amp;最简单的方法如下:

1)重新排序/排序JSON对象列表 2)清除DOM列表(或根据你的jTemplate删除列表),类似这样的

$('#list').html('');

3)然后通过在JSON对象上重新运行jTemplate来重新填充列表。

请记住,使用模板引擎向DOM呈现列表很快,使代码更清晰,并且不需要任何复杂的逻辑来将JSON对象映射到其等效的DOM

答案 2 :(得分:0)

创建新元素,将子元素添加到此元素,将父元素添加到DOM。