在jquery元素集合中切换元素位置

时间:2011-06-20 15:14:10

标签: jquery arrays

我使用了一个json对象解决了我存储元素及其位置的问题。现在我可以轻松更改元素值:

myJsonObject = {el:[pos: 1, el: element1], el2:[pos: 2, el: element2], etc}

我有一个dom元素集合的对象,即:

var els = $('#myDiv div');

我需要做的是切换此对象中包含的两个元素的位置。例如:element[2]取代element[4]element[4]取代element[2]

通过论坛阅读我发现一个数组原型函数在数组上执行: Reordering arrays

但我无法使用它因为我的不是阵列。 Jquery有一个函数将对象更改为名为makeArray的数组,但我必须将其保存为对象,否则我无法使用稍后我需要的所有jquery方法迭代我的对象。 有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

JQuery选择只是增强数组,因此您可以使用数组表示法直接修改它们。

var selection = $('#myDiv div');
var tmp = selection[2];
selection[2] = selection[4];
selection[4] = tmp;

我不相信你所做的是一个好主意,但上述情况应该有效。


顺便说一句,一般来说,如果你有一个节点数组或一个NodeList,那么你可以把它作为一个参数传递给$()来把它变成一个JQuery选择:

var nodes = documents.getElementsByTagName('p'); // Returns an ordinary NodeList
$(nodes).hide(); // You can run JQuery methods on the NodeList by passing it to $()

答案 1 :(得分:0)

你可以尝试这样的事情(疯狂的代码,同意):

var els = $('#myDiv div');

var el2 = els.eq(1); // second element in collection
var el2clone = el2.clone( true );
var el4 = els.eq(3); // fourth element in collection

el2clone.after( el4 );
el4.after( el2 );
el2.remove();

els = $('#myDiv div');