我有这个标记:
#a(data-row="2", data-col="3") a
#b(data-row="1", data-col="1") b
#c(data-row="1", data-col="3") c
#d(data-row="2", data-col="2") d
#e(data-row="1", data-col="2") e
#f(data-row="2", data-col="1") f
Run Code Online (Sandbox Code Playgroud)
如您所见,它定义了一个元素网格(3列和2行).
我需要使用jQuery项目名单,并通过命令他们row和col.
提供的标记结果应为:
b, e, c, f, d, a
Run Code Online (Sandbox Code Playgroud)
我可以成功地按行排序,但后来我不知道用col命令它们的最佳方法是什么:
var gridElements = $('div');
gridElements.sort(function (a, b) {
var contentA =parseInt( $(a).attr('data-row'));
var contentB =parseInt( $(b).attr('data-row'));
return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
});
Run Code Online (Sandbox Code Playgroud)
CodePen:http://codepen.io/FezVrasta/pen/bVEezw
我想我应该按数据行过滤列表然后sort再在每个组上运行,但是如何?
第二个值仅在第一个值相等时才适用,因此这应该适合您:
var gridElements = $('div');
gridElements.sort(function (a, b) {
var contentA =parseInt( $(a).attr('data-row'));
var contentB =parseInt( $(b).attr('data-row'));
//check if the rows are equal
if (contentA === contentB) {
var colA = parseInt( $(a).attr('data-col'));
var colB = parseInt( $(b).attr('data-col'));
//do the same as your already doing but using different data, from above
return (colA < colB) ? -1 : (colA > colB) ? 1 : 0;
}
else {
return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1133 次 |
| 最近记录: |