【发布时间】:2015-02-03 09:40:57
【问题描述】:
基本上我有以下由 PHP 呈现的内容:
<div class="parent">
<div class="child" data-sort=2>2</div>
<div class="child" data-sort=1>1</div>
<div class="child" data-sort=3>3</div>
</div>
<div class="parent">
<div class="child" data-sort=1>1</div>
<div class="child" data-sort=3>3</div>
<div class="child" data-sort=2>2</div>
<div class="child" data-sort=2>2</div>
</div>
而我想要返回的是:
<div class="parent">
<div class="child" data-sort=1>1</div>
<div class="child" data-sort=2>2</div>
<div class="child" data-sort=3>3</div>
</div>
<div class="parent">
<div class="child" data-sort=1>1</div>
<div class="child" data-sort=2>2</div>
<div class="child" data-sort=2>2</div>
<div class="child" data-sort=3>3</div>
</div>
所以基本上它必须根据每个子元素的数据排序属性对父元素的多个实例进行排序,同时仍保持其在父元素中的状态。
您将如何使用 jQuery 来定位每个父元素,然后根据 data-sort 属性对该父元素中的每个子元素进行排序。
这是我最接近的,但它没有渲染任何东西:
<script>
jQuery(document).ready(function($) {
jQuery.each('.parent', function(index, val) {
jQuery(jQuery(this).children('.child')).sort(function(a,b){
return a.dataset.sort > b.dataset.sort;
}).appendTo(this);
});
});
</script>
提前致谢!
【问题讨论】:
-
嗯,当然不是,jQuery 对象don't have a
sortmethod。 -
我认为在 PHP 中更改输出顺序更容易。
-
输出基于 ajax 请求,所以我无法选择返回数据的顺序。感谢您的建议
-
另请注意,当您在
ready回调中接受$参数时,您可以在该回调中使用$代替jQuery。
标签: javascript jquery sorting