gpt4 book ai didi

javascript - 遍历元素对它们的子元素进行排序

转载 作者:行者123 更新时间:2023-11-28 00:04:07 25 4
gpt4 key购买 nike

我试图迭代具有特定类的所有元素,以根据其子元素的值属性对其子元素进行排序。我需要对每个父元素的子元素分别进行排序。

HTML 结构:

<ul class="parentClass">
<li value="1">...</li>
<li value="10">...</li>
<li value="8">...</li>
</ul>
<ul class="parentClass">
<li value="8">...</li>
<li value="29">...</li>
<li value="5">...</li>
</ul>

JS代码:

function sortAll() {
$(".parentClass").each(function() {
var items = $(this).children("li").sort(function(a, b) {
var vA = $("li", a).attr("value");
var vB = $("li", b).attr("value");
return (vA > vB) ? -1 : (vA > vB) ? 0 : 1;
});
$(this).append(items);
});
}

我想要得到什么:

<ul class="parentClass">
<li value="10">...</li>
<li value="8">...</li>
<li value="1">...</li>
</ul>
<ul class="parentClass">
<li value="29">...</li>
<li value="8">...</li>
<li value="5">...</li>
</ul>

我想我误解了迭代的某些内容。你能帮我找出我的错误吗?

我还想让您知道一些 <li>元素可以具有相同的值。

解决方案:

function sortAll() {
$(".parentClass").each(function() {
var items = $(this).children("li").sort(function(a, b) {
var vA = $(a).attr("value");
var vB = $(b).attr("value");
return (vA > vB) ? -1 : (vA > vB) ? 0 : 1;
});
$(this).append(items);
});
}

最佳答案

您应该使用$(a)$(b)而不是 $("li", a)$("li", b)ab引用li元素。您正在尝试寻找后代li li 的 s元素( $(selector, context)$(context).find(selector) 相同)。查询返回空集合,随后返回 attr返回 undefined值(value)。两者undefined > undefinedundefined < undefined返回falsesort回调总是返回 0这使得顺序保持不变。

关于javascript - 遍历元素对它们的子元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31505925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com