Я наткнулся на это, пытаясь исправить то, что я был после.Я взял метод @ shrikant-sharat и добавил немного к нему, так как атрибут, по которому мне нужно было отсортировать, был на самом деле дочерним элементом.Мысль, которую я бы добавил здесь, на случай, если это кому-нибудь поможет (и на будущее мне!)
$.fn.asort = function (order, attrName, filter) {
console.log(this.length, order.length, order);
for(var i = 0, len = order.length; i < len; ++i) {
if(typeof(filter) === 'function') {
filter(this.children(), attrName, order[i]).appendTo(this);
} else {
this.children('[' + attrName + '=' + order[i] + ']').appendTo(this);
}
}
return this.children();
}
Это позволяет вам передать функцию фильтра, соответствующую элементу, который вы ищете.Полагаю, это не самый эффективный способ, но он работает для меня, например:
$('.my-list').asort(mapViewOrder, 'data-nid', function(items, attrName, val) {
return items.filter(function(index, i) {
return ($(i).find('[' + attrName + '="' + val + '"]').length);
});
});