从可排序列表中获取所有元素属性

Get all Element Attributes from a Sortable list

本文关键字:元素 属性 获取 排序 列表      更新时间:2023-09-26

所以我有一个div列表,这些div可以使用Jquery UI选项sortable进行排序
这些div包含一些使用setAttribute方法的自定义属性,如:
.setAttribute("Nr", "Nr_1").setAttribute("V", "V_1")。我已经可以使用.toArray方法获得单个属性的数组

$("#NameContainer").sortable("toArray", { attribute: 'value'});

$("#NameContainer").sortable("toArray", { attribute: 'Nr' });

$("#NameContainer").sortable("toArray", { attribute: 'V' });


 <div id="NameContainer" class="ui-widget">
      <div value="Name_1" id="Name_1">John</div>
      <div value="Name_2" id="Name_2">Jack</div>
      <div value="Name_3" id="Name_3">Charlie</div>
      <div value="Name_4" id="Name_4">Sawyer</div>
      <div value="Name_5" id="Name_5">Yin</div>
      <div value="Name_6" id="Name_6">Ben</div>
    </div>

我现在的问题是,在单个变量中对每个元素进行排序或课程后,我如何才能以正确的顺序获得它们的所有属性

更新:
所以我的第一个按预期工作的解决方案是这样的:

for(var i = 0; i<ArrayList.length; i++){
var attributeArray = [arrayValue[i], arrayNr[i], arrayV[i] ];
mainArray.push(attributeArray);
}

然后调用main:mainArray[ ] [1]

EDIT:只对主div容器执行此操作。。固定:

如果你想按照找到属性的顺序获得属性,那么我认为你可以按照以下方式来做:

var el = $('#NameContainer > div');
var nodes=[], values=[];
el.each(function() {
    for (var att, i = 0, atts = $(this).attributes, n = atts.length; i < n; i++){
        att = atts[i];
        nodes.push(att.nodeName);
        values.push(att.nodeValue);
    }
});

这将给您提供两个数组,其中节点的索引i将为您提供属性名称,值的相同索引i将是该属性的伴随值。这可以通过多种不同的方式进行重组,但这是实现目标的简单方法。