2013-02-12 63 views
0

如何移动元素结束但保持变量不更新而不更新?jQuery移动元素结束但保持变量更新

var pbUL = $('ul'); 
var pbLIs = $('li'); 
pbLIs.eq(0).appendTo(pbUL); 
pbLIs = $('li'); // not good... 

简单的问题 - 可能简单soluction,但我不知道如何解决......

+0

我不明白这一点,你有媒体链接匹配的元素集合,你希望它改变,因为你在DOM移动呢? – adeneo 2013-02-12 19:04:40

+0

我不明白你想达到什么。最后一行是无用的。在此之前,pbLIs的引用仍然是相同的jQuery对象,它从来没有改变过。请提供您想要实现的示例。 – glmxndr 2013-02-12 19:05:49

+0

您使用的是哪种浏览器和jQuery版本? [它按照预期工作](http://jsfiddle.net/mblase75/sLPEz/)。 – Blazemonger 2013-02-12 19:05:51

回答

1

为什么不是这样:

(function($) { 
    $.fn.shift = function() { 
     var bottom = this.get(0); 
     this.splice(0,1); 
     return bottom; 
    }; 
})(jQuery); 

var arr = $('li'); 
arr.push(arr.shift()); 

演示:http://jsfiddle.net/m6Pf6/

+0

jQuery有一个'推'的方法吗?或“移位”方法? – 2013-02-12 19:05:40

+0

@KevinB - 不,但数组。 – adeneo 2013-02-12 19:06:37

+0

是的,你的答案表明它确实......它具有.push,但它没有记录,并且不适合公共使用。它没有转变。 'pbLIs'是一个jQuery集合,而不是数组。 – 2013-02-12 19:07:09

0

尝试更换这一部分:

pbLIs.eq(0).appendTo(pbUL); 
pbLIs = $('li'); // not good... 

与此:

pbLIs = pbLIs.eq(0).appendTo(pbUL); 
+0

这会返回附加的“li”,而不是所有的“li”的 – 2013-02-12 19:06:21

+0

他已经有了所有匹配元素的列表。即使移动了位置,移动的仍然存在。我以为OP想要那个移动的人,所以他/她可以用它做点什么。 (我想这是没有道理的,因为OP的最后一行代码。) – 2013-02-12 19:10:08