Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 复杂jQuery div排序_Javascript_Jquery_Arrays_Sorting - Fatal编程技术网

Javascript 复杂jQuery div排序

Javascript 复杂jQuery div排序,javascript,jquery,arrays,sorting,Javascript,Jquery,Arrays,Sorting,我试着用不同的方式来分类一些div,我完全迷路了。我一直在尝试一些东西,但我不知道如何让它发挥作用 我在一个容器中有一组不同的div,它们具有相同的类、不同的id、rel和data属性 <div id="container"> <div class="sortable" id="div541" rel="1234" data-rel="Name One"> [some inside html including a table and divs]

我试着用不同的方式来分类一些div,我完全迷路了。我一直在尝试一些东西,但我不知道如何让它发挥作用

我在一个容器中有一组不同的div,它们具有相同的类、不同的id、rel和data属性

<div id="container">
    <div class="sortable" id="div541" rel="1234" data-rel="Name One">
        [some inside html including a table and divs]
    </div>
    <div class="sortable" id="div354" rel="4321" data-rel="Name Two">
        [some inside html including a table and divs]
    </div>
    <div class="sortable" id="div763" rel="112233" data-rel="Name Three">
        [some inside html including a table and divs]
    </div>
</div>
但是在进行实际排序之前,我必须对IDs数组进行排序,这就是我丢失的地方。 在我继续之前,这是实现排序的最佳方式吗?container.append部件是否会修改任何ID或复制和div

如果可以的话,你能帮我吗

我首先做一个
$('.sortable).each()
,其中我做了一个3“列”数组。然后我对rel或data rel属性ASC或DESC进行排序,数组排序后,我使用它将div追加到容器中。这样行吗?我讨厌在JavaScript中特别使用数组,所以你能帮我做一个函数对它进行排序,然后让ID列表按顺序恢复吗


非常感谢

一种有趣的排序方法是创建一个包含排序属性值、sperarator和元素ID的精心编制的字符串数组

在示例数据中,字符串数组应如下所示:

['Name One#div541', 'Name Two#div354', 'Name Three#div763', ...]
或者,如果要按数值排序:

['0001234#div541', '0004321#div354', '0112233#div763', ...]
请注意,在这种情况下,您应该用零填充数字字符串,以便按字符串排序是正确的

之后,您只需在数组上使用javascript
.sort()
方法即可。数组排序后,可以通过解析分隔符之前的数据来获取ID

如果希望排序按降序进行,只需在排序后使用
.reverse()

编辑 您可以将精心编制的数组转换为所需的IDs数组,如下所示:

 var ids = ['#div541', '#div354', '#541' ...];
 var cont = $('#resultados');
 $.each(ids, function(i, v) {
     cont.append($(v));
 });
var idsArray = $.map( craftedArray, function(val, i) {
  return val.substring(val.indexOf('#'));
});

嗯,我不确定。我将如何“取消起草”它呢?我添加了一种可能的方法,可以使用jQuery的
.map()