有一个元素列表,让我们说一些图像:
<img src="" alt="">
<img src="" alt="">
<img src="" alt="">
我选择它们并将结果存储在变量中:
var elements = $('img');
现在我想把最后一张图片带到第一个位置。它的工作原理如下:
elements.first().before(elements.last());
之后,对象elements
自然仍然按照之前的顺序保存值。我可以通过在班次后再次查询来更新这个:
elements = $('img');
但是当我已经将所有元素放在一起时,运行另一个查询似乎效率低下。此外,因为它不是一个数组,所以不起作用:
elements.unshift(elements.pop());
在这种情况下更新对象列表的最佳方法是什么?
答案 0 :(得分:3)
答案 1 :(得分:1)
这里有两件事情。
DOM中有一组元素,一个变量包含对这些元素的引用的DOM片段。
jQuery first()
和last()
函数正在移动DOM中的元素,但是他们对变量一无所知。
从代码简单的角度来看,您建议的代码是最易读的,除非您经常调用它,否则应该没问题。
elements = $('img');
否则,将变量转换为数组:
var elementsarray = [];
elements.each(function(i) { elementsarray[] = this; });
答案 2 :(得分:0)
<div class="container">
<img src="" alt="">
<img src="" alt="">
<img src="" alt="">
</div>
$('.container img:last-child').prependTo('.container'); //would work
$('img:last', elements).prependTo(elements);
// i think this will also work if you need to cache it