我不确定该怎么做。我们说我有以下HTML代码:
<div id="container">
<div class="item" order="5"></div>
<div class="item" order="3"></div>
<div class="item" order="4"></div>
<div class="item" order="1"></div>
<div class="item" order="2"></div>
</div>
使用jQuery,我如何根据属性&#34; order&#34 ;?命令这些div?通过重新排序,我的意思是我希望dom根据属性&#34; order&#34;来更新div的顺序。这自然会调整div的z指数。我知道根据属性顺序设置z-index将在浏览器窗口中显示正确的显示,但它不会操纵dom顺序。
我假设我会遍历#container并获得孩子及其顺序:
$('#container > div').each( function(event) {
var itemOrder = $(this).attr('order');
});
......但我对如何操纵订单感到茫然。任何帮助将不胜感激。
答案 0 :(得分:10)
你可以这样做:
$('#container').append($('#container .item').sort(function(a,b){
return a.getAttribute('order')-b.getAttribute('order');
}));
答案 1 :(得分:1)
$('#container > div').each( function(event) {
$(this).css('z-index', $(this).attr('order'));
});
答案 2 :(得分:0)
试着看看这里。可能有助于理解基本原则。 http://james.padolsey.com/javascript/sorting-elements-with-jquery/
答案 3 :(得分:0)
我想你想要:DEMO
$('#container > div').sortElements(function(a, b){
return parseInt($(a).attr('order')) > parseInt($(b).attr('order')) ? 1 : -1;
});
答案 4 :(得分:0)
以下是按属性排序div的方法&#34; tag&#34;作为一个单词。 JSFiddle有代码来检查多个单词等。发布因为我找不到时找不到解决方案。
<div id="tag_sections">
<!-- populated with sorted divs -->
</div>
<div id="all_tags">
<div data-tag="blue">8</div>
<div>1</div>
<div data-tag="tag">2</div>
<div data-tag="red">3</div>
<div data-tag="blue">4</div>
<div>5</div>
<div data-tag="red">6</div>
<div data-tag="blue">7</div>
</div>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
// sort all by title tag
var allTags = [];
$('#all_tags div').each(function() {
theTag = $(this).attr('data-tag');
if (!theTag) { theTag = 'ungrouped'; }
if (!$('#'+theTag).length) {
allTags.push(theTag);
$('#tag_sections').append('<div id="'+theTag+'"><h3>'+theTag+'</h3></div>');
}
if ($.inArray(theTag, allTags) > -1) {
$('#tag_sections #'+theTag).append($(this));
}
});
</script>
http://jsfiddle.net/zyEwF/269/
按属性值排序,不是数字,并创建新的div以将这些已排序的元素添加到。