我正在尝试按特定顺序将元素添加到 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");
DEMO: http://jsfiddle.net/ZUAcy/ http://jsfiddle.net/ZUAcy/
你可能认为 jQuery 在幕后做这件事add()
但它实际上从函数返回一个pushStack来优化它的选择器:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)