如何使用jquery根据子div的特定文本对打印结果进行排序?

如何使用jquery根据子div的特定文本对打印结果进行排序?,jquery,Jquery,我有一份打印结果(div)列表。每个div都包含一个子div,其文本为“CLOSE”或“OPEN”。我希望对结果进行排序,以便包含单词“OPEN”的div始终位于列表的顶部。如何使用jquery实现这一点 <div class="box"><div class="status">CLOSE</div></div> <div class="box"><div class="status">CLOSE</div>&l

我有一份打印结果(div)列表。每个div都包含一个子div,其文本为“CLOSE”或“OPEN”。我希望对结果进行排序,以便包含单词“OPEN”的div始终位于列表的顶部。如何使用jquery实现这一点

<div class="box"><div class="status">CLOSE</div></div>
<div class="box"><div class="status">CLOSE</div></div>
<div class="box"><div class="status">OPEN</div></div>
关闭
接近
打开

我认为这不是一个重复的问题,因为在我的小提琴中,我想让列表按子元素的特定文本排序,而不是按属性“数据排序”。
谢谢,您可以将元素包装在包含div(或您选择的其他元素)中,然后使用本机排序函数对它们进行排序。例如:

函数排序(){
//获取您的根元素
变量根=$(“#toSort”);
//将所有子节点作为标准HTML节点,并将它们与DOM分离
var elements=root.children(“.box”).detach();
//将其从JS对象转换为数组
var arr=数组。从(元素);
//对元素进行排序
arr.sort(功能(左、右){
var result=rhs.textContent==“打开”?1:0;
结果-=lhs.textContent==“打开”?1:0;
//排序工作基于结果为+ve/-ve/0
返回结果;
});
//将元素重新添加回DOM
根追加(arr);
}
.box{宽度:85%;页边距底部:4px;背景:ccc;填充:5px;}

排序元素
接近
接近
打开
接近
打开
接近
打开

的可能重复,但如何在页面加载时对其进行排序?为什么不在这里工作?我复制/粘贴了你的代码,但排序无效@设计器JSFIDLE似乎将函数定义放在window.onload函数中,因此窗口范围无法访问该函数。在本例中,将第一行替换为
window.sort=function(){
,请参见-您还需要包括jQuery,因为这是初始问题所要求的。不过,我给出的解决方案在没有jQuery的情况下基本上是有效的。