当然这个jQuery不应该工作

时间:2012-02-02 23:16:43

标签: jquery

我错误地编写了一段代码。现在我需要它向我解释,因为它使我的工作困惑:

$(altsValue[i].css('border', '5px solid red'));

'altsValue'是一个对象数组,构造如下:altsValue.push($(this));

'我'是循环中的计数器。

问题是第一行肯定是一个jQuery选择器。然而它确实将有问题的元素的CSS设置为正确的属性!?

有人可以为我揭开神秘面纱吗?

3 个答案:

答案 0 :(得分:2)

altsValue[i]是一个jQuery元素,因为你将$(this)推入其中。因此它在该元素上设置css。我不知道它周围的额外$(...)做了什么......可能没什么。

答案 1 :(得分:0)

执行altsValue.push($(this));时,您正在将jQuery对象推送到数组中。

这意味着在你的循环中,altsValue[i]是一个jQuery对象。

然后在该jQuery对象上调用.css('border', '5px solid red'),该对象设置边框。与大多数jQuery方法一样,.css返回它操作的jQuery对象。

外部$()就像$(altsValue[i])一样,将对象转换为另一个jQuery对象。由于它已经是一个jQuery对象,它只返回相同的对象。

答案 2 :(得分:0)

这是因为你的设置属性。 从技术上讲,你正在执行这个:

var alertsValue = [$(".class#id1"), $(".class#id2")]

altsValue[i].css('border', '5px solid red');

as altsValue [i] === $(this);所以你正在访问一个jQuery对象而不仅仅是一个数组对象。