我正在使用.each()
迭代jQuery对象$firstParagraph
中的链接。当我遍历链接时,我想以绝对方式引用它们,而不调用$(this)
,每次调用它时都会创建一个新对象。因为当我在链接上独立迭代两次时(如下面的代码所示),那么两个实例中完成的工作就不会合并。
$firstParagraph = $("p").eq(0);
// Iterate over the links once
$firstParagraph.find("a").each( function()
{
$this = $(this);
// Modify $this
});
// Iterate over the links a second time
$firstParagraph.find("a").each( function()
{
$this = $(this);
// I want to modify $this again, but without loosing
// the work I did in the first iteration
});
答案 0 :(得分:4)
不要像你要求的那样猛烈地反对jQuery,让我告诉你如何做你真正需要做的事情:使用$(this).data('somekey', someval)
和$(this).data('somekey')
来代替直接修改$(this)
作为一个对象,因此失去了您想要做的任何事情,将数据附加到您的$(this)
概念中,以便您能够将其恢复。 (文件here。)
答案 1 :(得分:1)
为什么不追加数组?当您使用简单变量时,它将始终覆盖它。
答案 2 :(得分:0)
您可以这样做:
var elemArray = [];
// Iterate over the links once
$firstParagraph.find("a").each( function(i)
{
$this = $(this);
elemArray[i] = $this;
// Modify $this
});
// Iterate over the links a second time
$firstParagraph.find("a").each( function(i)
{
$this = elemArray[i];
// I want to modify $this again, but without loosing
// the work I did in the first iteration
});
我不确定这是不是一个好主意,因为两个循环之间的事情可能会发生变化。