Tay*_*Mac 61 javascript jquery jquery-selectors jquery-ui-sortable
如果我有几个div:
<div data-sort='1'>div1</div>
<div data-sort='4'>div4</div>
<div data-sort='8'>div8</div>
<div data-sort='12'>div12</div>
<div data-sort='19'>div19</div>
Run Code Online (Sandbox Code Playgroud)
我动态创建div:
<div data-sort='14'>div1</div>
<div data-sort='6'>div1</div>
<div data-sort='9'>div1</div>
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它们按顺序排列已经加载的div,而不必重新加载所有的div?
我认为我需要在屏幕上构建所有div的数据排序值数组,然后查看新div适合的位置,但我不确定这是否是最好的方法.
Jay*_*ena 97
使用此功能
$('div').sort(function (a, b) {
var contentA =parseInt( $(a).attr('data-sort'));
var contentB =parseInt( $(b).attr('data-sort'));
return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
});
Run Code Online (Sandbox Code Playgroud)
你可以在添加新的div之后调用这个函数
PJ *_*net 20
我把它变成了一个jQuery函数:
jQuery.fn.sortDivs = function sortDivs() {
$("> div", this[0]).sort(dec_sort).appendTo(this[0]);
function dec_sort(a, b){ return ($(b).data("sort")) < ($(a).data("sort")) ? 1 : -1; }
}
Run Code Online (Sandbox Code Playgroud)
所以你有一个像"#boo"这样的大div和你里面的所有小div:
$( "#嘘")sortDivs().
由于Chrome中存在错误,您需要"?1:-1",如果没有这个错误,它将不会超过10个div!http://blog.rodneyrehm.de/archives/14-Sorting-Were-Doing-It-Wrong.html
这里回答了同样的问题:
重新发布:
在搜索了许多解决方案之后,我决定在博客中介绍如何在jquery中进行排序.总之,按数据属性对jquery"类数组"对象进行排序的步骤......
HTML
<div class="item" data-order="2">2</div> <div class="item" data-order="1">1</div> <div class="item" data-order="4">4</div> <div class="item" data-order="3">3</div>
普通的jquery选择器
$('.item');
Run Code Online (Sandbox Code Playgroud)
[<div class="item" data-order="2">2</div>, <div class="item" data-order="1">1</div>, <div class="item" data-order="4">4</div>, <div class="item" data-order="3">3</div> ]
让我们按数据顺序排序
function getSorted(selector, attrName) { return $($(selector).toArray().sort(function(a, b){ var aVal = parseInt(a.getAttribute(attrName)), bVal = parseInt(b.getAttribute(attrName)); return aVal - bVal; })); }
> getSorted('.item', 'data-order')
Run Code Online (Sandbox Code Playgroud)
[<div class="item" data-order="1">1</div>, <div class="item" data-order="2">2</div>, <div class="item" data-order="3">3</div>, <div class="item" data-order="4">4</div> ]
希望这可以帮助!
归档时间: |
|
查看次数: |
94740 次 |
最近记录: |