我碰到這個偶然試圖解決我是什麼了。 我採取@ 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);
});
});
是否有某種「邏輯」在該順序後面,或者您需要它嗎? – jAndy 2010-08-25 06:37:37
'n'不是有效的'html tag'屬性。它會在某些瀏覽器上引起一些不良行爲。 – Reigel 2010-08-25 06:38:13
@jAndy:我想要的就是這樣:D @Reigel:jquery有expando屬性本身。 – StoneHeart 2010-08-25 06:38:36