Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态排序时追加div_Javascript_Html - Fatal编程技术网

Javascript 动态排序时追加div

Javascript 动态排序时追加div,javascript,html,Javascript,Html,我有一些通过Comet从服务器接收的Json数据,这些数据以块的形式出现,每个块都有一个特定的ID,比如:a、b、c和d 这些数据块以随机顺序出现,因此数据块“a”实际上可以第二个接收,“d”第一个接收,等等 将这些块格式化为HTML后,附加到容器中。我需要的是以下内容:无论这些块以什么顺序到达,我都需要将它们按照其ID的正确字母顺序追加到容器中,这将导致以下div: <div id="container"> <div class="chunk" id="a">..

我有一些通过Comet从服务器接收的Json数据,这些数据以块的形式出现,每个块都有一个特定的ID,比如:a、b、c和d

这些数据块以随机顺序出现,因此数据块“a”实际上可以第二个接收,“d”第一个接收,等等

将这些块格式化为HTML后,附加到容器中。我需要的是以下内容:无论这些块以什么顺序到达,我都需要将它们按照其ID的正确字母顺序追加到容器中,这将导致以下div:

<div id="container">
   <div class="chunk" id="a">...</div>
   <div class="chunk" id="b">...</div>
   <div class="chunk" id="c">...</div>
   <div class="chunk" id="d">...</div>
</div>
一个解决方案是等待所有的块被接收,然后按正确的顺序追加它们,但这打破了我的一个要求,即一旦接收到块,就应该显示它


有没有办法在确保正确顺序的同时追加div?

您可以只追加新内容,然后对元素进行排序

$.ajax({
    url : 'page.php'
}).done(function(chunk) {
    $('#container').append(chunk)

    $('#container .chunk').sort(function(a,b) {
        return a.id.localeCompare(b.id);
    }).appendTo('#container');
});

如果你用c加上a,你知道你可以在a之后加上它,在f之前加上它。如果你首先有div元素,然后把数据填入其中,那就最容易了。或者用接收到的div元素替换最初存在的元素,如果您必须坚持从服务器获取整个div的话。这似乎是一个很好的使用时机。当您获得一个新块时,按顺序向下搜索列表,直到找到一个应位于当前插入项之后的项,然后执行container.insertbeforeTooFareElement,newElement.@CBroe和apsillers,我喜欢这两种解决方案,我将尝试它们。谢谢