Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery对象上的tSort_Javascript_Jquery_Sorting - Fatal编程技术网

Javascript jQuery对象上的tSort

Javascript jQuery对象上的tSort,javascript,jquery,sorting,Javascript,Jquery,Sorting,我正在尝试使用tSort对jQuery选择的结果进行排序 HTML: Javascript: <script> $sort_order = $('div').tsort({attr:'sort'}); </script> // As shown earlier above, var $wrapper = $('#wrapper'); $wrapper.find('div').sort(function (a, b) { return +a.getAt

我正在尝试使用tSort对jQuery选择的结果进行排序

HTML:


Javascript:

<script>
    $sort_order = $('div').tsort({attr:'sort'});
</script>
// As shown earlier above,
var $wrapper = $('#wrapper');
$wrapper.find('div').sort(function (a, b) {
    return +a.getAttribute('sort') - +b.getAttribute('sort');
})
.appendTo($wrapper);

// New code to add:
var divs = document.getElementsByTagName('div');
for(var i = 0; i < divs.length; i++) {
    if(divs[i].getAttribute('sort') == null || divs[i].getAttribute('sort') == undefined) {
        divs[i].parentNode.appendChild(divs[i]);   
    }
}

$sort_order=$('div').tsort({attr:'sort'});
我希望结果是:jQuery对象中的1,2,3,4,5,6,尚未插入页面。
使用tSort可以实现这一点吗?或者我应该编写自己的算法吗?

如果有一个包含所有
div
元素的包装器,那么这样做会更容易

HTML:


对于的注释,您可以轻松地将不具有
sort
属性的元素放置在
包装器
元素的后面,即使没有jQuery

假设这是您的HTML:

<div id="wrapper">
<div style="color:red;">red color, without sort attribute</div>
<div style="color:red;" sort="7">red color (sort attribute=7)</div>
<div sort="2">2</div>
<div sort="3">3</div>
<div sort="1">1</div>
<div sort="4">4</div>
<div sort="6">6</div>
<div sort="5">5</div>
</div>

.

在使用.tsort之前克隆它

 $sort_order = $('div').clone().tsort({attr:'sort'});

这非常有效,是否也可以将“未定义”的放在后面而不是前面?(例如:2,没有排序属性)感谢您的时间,但这还不是我想要的,在我的描述中,我说:“我希望jQuery对象中的结果是:1,2,3,4,5,6,尚未插入页面”。使用此解决方案,它会直接插入到页面中。@Tim看一下我的答案,.clone()是解决此问题的方法。@chris97ong explain…OP在问题中说$sort_order应该对div进行排序,而不是对html进行排序。tsort()可以很好地对html进行排序,否则…我已经尝试实现了这一点。。排序工作正常,但必须填写所有排序属性。没有“sort”属性的文件将保留在原来的位置。
<div id="wrapper">
<div style="color:red;">red color, without sort attribute</div>
<div style="color:red;" sort="7">red color (sort attribute=7)</div>
<div sort="2">2</div>
<div sort="3">3</div>
<div sort="1">1</div>
<div sort="4">4</div>
<div sort="6">6</div>
<div sort="5">5</div>
</div>
// As shown earlier above,
var $wrapper = $('#wrapper');
$wrapper.find('div').sort(function (a, b) {
    return +a.getAttribute('sort') - +b.getAttribute('sort');
})
.appendTo($wrapper);

// New code to add:
var divs = document.getElementsByTagName('div');
for(var i = 0; i < divs.length; i++) {
    if(divs[i].getAttribute('sort') == null || divs[i].getAttribute('sort') == undefined) {
        divs[i].parentNode.appendChild(divs[i]);   
    }
}
 $sort_order = $('div').clone().tsort({attr:'sort'});