我正在尝试以特定顺序向 jQuery 对象添加元素。但是,结果集的排序与 DOM 树相同。例如:
<div>one</div>
<span>two</span>
<p>three</p>
...
var $result = $("span").add("p").add("div");
我想要一个结果集,其中 $result[0] 是跨度,$result[1] 是 p,依此类推。但是,它们的顺序与 DOM 中的顺序相同。
除了 .add() 之外,还有其他方法可以像我想要的那样构建 jQuery 对象吗?
我知道我可以为它们分配一些数据属性来指定顺序,并以此对我的结果集进行排序。然而,这将需要在我的应用程序中发生数十次,并且每次都必须分配订单数据值和排序将非常难看,并且实现起来会花费太长时间。
最佳答案
可以使用原生的Array.push
:
$.fn.push = function(selector) {
Array.prototype.push.apply(this, $.makeArray($(selector)));
return this;
};
var $result = $("span").push("p").push("div");
您可能认为 jQuery 在 add()
的幕后执行此操作,但实际上它从函数返回一个 pushStack 以优化其选择器:http://james.padolsey.com/jquery/#v=1.7.2&fn=jQuery.fn.add
关于javascript - 如何保留添加到 jQuery 匹配集中的项目的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13281897/