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

时间:2016-09-08 12:57:05

标签: javascript jquery html jquery-ui

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

.toArray

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

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


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

我现在的问题是,如何在每个Elemente进行排序或使用singel变量后,以正确的顺序获取所有属性。

更新:
因此,我的第一个按预期工作的解决方案如下:

 <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); }

1 个答案:

答案 0 :(得分:0)

编辑:只是为主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将是该属性的伴随值。这可以通过多种不同方式进行重组,但这是实现目标的简单方法。