使用jQuery将多个列表元素的名称聚合到单个数组中

饼干堆栈

我有一些列表允许我使用sortable.js重新排列,并且我需要在拖动完成时创建一个排序顺序数组。HTML如下:

<div id="catscontainer">
    <div id="parentcat1" class="parentcatcontainer">
    <h4 class="parentcathead">Parent Category One</h4>
    <ul class="subcatlist" id="ul-parentcat1">
        <li id="parentcat1-subcat1">Sub Category One</li>
        <li id="parentcat1-subcat2">Sub Category Two</li>
        <li id="parentcat1-subcat3">Sub Category Three</li>
    </ul>
    </div>
    <div id="parentcat2" class="parentcatcontainer">
    <h4 class="parentcathead">Parent Category Two</h4>
    <ul class="subcatlist" id="ul-parentcat2">
        <li id="parentcat2-subcat1">Sub Category One</li>
        <li id="parentcat2-subcat2">Sub Category Two</li>
        <li id="parentcat2-subcat3">Sub Category Three</li>
    </ul>
    </div>
</div>

我一直在使用以下可排序的代码:

var sortySubCats = Sortable.create(el, {
    group: 'titles',
    animation: 150,
    dataIdAttr: 'id',
    onUpdate: function( /**Event*/ evt) {
        var orderListSub = sortySubCats.toArray();
    }
}

这导致了一个数组,该数组orderListSub仅输出与之交互的父类别中的项目列表。很好,但是不适合我的目的。在mySQL中,我存储了整个层次结构数组的序列化版本。这个问题的结构是多余的,但是在完成每个拖动后,我确实需要按顺序输出以下内容:

Parent Category ID
> Sub Category ID
> Sub Category ID
> Sub Category ID
Parent Category ID
> Sub Category ID
> Sub Category ID
> Sub Category ID
etc...

放入一个我可以序列化的数组中 目前,我正在遍历catscontainer div的每个UL以获取ID名称,并在其中进行子迭代以获取LI ID名称。这应该按顺序返回它们。是否有通过jquery进行清理的特别干净的方法,或者sortable实际上是否比我所经历的更好地实现了此功能?


更新:

我使用以下简单的jquery来捕获列表中父级和子级元素的ID,它们的顺序与拖动后它们的外观相匹配。似乎是最直接的方法,我可以添加更多代码以将其转换为所需的数组。如果没有更好的建议,我将其添加为答案。

function catsToArrayJSON() { // called after drag complete
    $("#catscontainer ul").each(function () {
        console.log('Parent is: ' + this.id);
        $(this).children("li").each(function () {
            console.log('Child is: ' + this.id);
        })
    });
}
饼干堆栈

我使用以下简单的jquery来捕获列表中父级和子级元素的ID,它们的顺序与拖动后它们的外观相匹配。似乎是最直接的方法,我可以添加更多代码以将其转换为所需的数组。

function catsToArrayJSON() { // called after drag complete
    $("#catscontainer ul").each(function () {
        console.log('Parent is: ' + this.id);
        $(this).children("li").each(function () {
            console.log('Child is: ' + this.id);
        })
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将多个节点聚合到XSLT中的单个节点

将单个键的多个值聚合到单个存储桶Elasticsearch中

如何使用jq将子值聚合到数组中?

Postgres:将列聚合到数组中

将数组的每个值组合到PHP中的单个数组

无法使用 javascript 将多个值数组推入键数组到单个数组中

将具有不同大小的字符向量列表组合到单个数据帧中

单个数组可在每个元素中存储多个变量

在Java中将多个对象存储在单个数组元素中

将每个数组的子元素组合到新的最终数组中-JavaScript

postgresql将数组聚合为具有所有元素的并集的单个数组

使用Vuejs在单个数组元素中包含多个字段

是否可以将多个 map 和 reduce 函数组合到 Scala 中的单个通道中?

如何使用 Python 将多个对象添加到 json 文件中的单个数组中?

将多个输入onChange反应到单个数组中

Swift:将多个类型存储在单个数组中

无法使用没有标识符名称的数组声明单个数组中的所有元素

将数组中的每个元素拆分为多个数组

如何将一个字段的值聚合到一个数组中?

我们如何在MongoDB聚合查询中求和单个数组元素?

在 lodash 中使用 _.groupBy 将字符串聚合到数组中

ElasticSearch按字段将文档聚合到数组中

将窗口聚合到Pandas DataFrame中的数组

如何将列聚合到JSON数组中?

聚合多个数组

将单个数组中的值与多个数组系列进行比较,然后回显结果

将列表元素整合到列表列表中

将Pandas索引中的分组数组元素转换为Python中的单个数组元素

如何使用 PHP 将多个数组合并为单个数组