Nat*_*ael 2 javascript sorting jquery
是否可以按属性的值对jQuery结果进行排序?例如,请考虑以下代码段和结果:
$('span').each(function()
{
$('#log').append($(this).attr('name'));
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<span name="a5"></span>
<span name="a3"></span>
<span name="a6"></span>
<span name="a1"></span>
<span name="a4"></span>
<div id="log"></div>Run Code Online (Sandbox Code Playgroud)
在不修改HTML或DOM的情况下,如何最好地修改此代码以获得排序结果,即.a1a3a4a5a6?虽然我显然可以将每个结果都放在一个数组中然后对它进行排序,但我假设使用jQuery的原生能力有更优雅的方式.在那儿?
您不需要构建中间数组,为方便起见,jQuery公开了Array.prototype.sort方法:
$.fn.sort = Array.prototype.sort;
Run Code Online (Sandbox Code Playgroud)
而且因为它Array.prototype.sort;是通用的(*),它只是神奇地适用于jQuery集合.
$('span')
.sort(function(a, b) {
return $(a).attr('name').localeCompare($(b).attr('name'));
})
.each(function() {
$('#log').append($(this).attr('name'));
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span name="a5"></span>
<span name="a3"></span>
<span name="a6"></span>
<span name="a1"></span>
<span name="a4"></span>
<div id="log"></div>Run Code Online (Sandbox Code Playgroud)
this实例是一个真实Array实例,只要它是一个类似数组的集合.