我碰到这个偶然试图解决我是什么了。 我采取@ 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