用jquery“选择”两次?

时间:2014-09-07 19:50:12

标签: javascript jquery

我不确定我会怎么说这个问题,所以我在网上找不到任何关于它的东西,但是有什么理由要用jquery“选择”一个元素两次?我正在尝试理解的应用程序中包含多个这样的示例。

var t = $($("#slider li")[currentIndex]);
IPS.SetTheme($($("#slider li")[currentIndex]));
$($("#location li")[currentIndex]).addClass("selected");

出于范围原因,它是否与this偶尔写为$(this)的原因类似?

3 个答案:

答案 0 :(得分:5)

$(selector)[index]返回裸DOM元素,因此需要用$()包装它以获取jQuery对象。

答案 1 :(得分:1)

我有点困惑。但是,让我试着帮助你。

嗯,关于这个:

var t = $($("#slider li")[currentIndex]);

var t是一个jQuery对象。所以你可以这样做:

t.hide(); // to hide the element
t.show(); // to show the element
t.css("color", "red"); // to make the text color red

我们在这里谈论索引。您可以了解更多信息:http://api.jquery.com/index/

例如,我们有这个HTML代码:

<ul id="slider">
  <li>foo</li>
  <li>bar</li>
  <li>baz</li>
</ul>

所以,如果我们这样做:

var currentIndex = 0; // Setting the index 0 -> 0 is the first
var t = $($("#slider li")[currentIndex]); // taking first li
t.remove(); // removindo first li

它将导致:

<ul id="slider">
  <li>bar</li>
  <li>baz</li>
</ul>

索引怎么样?

<ul id="slider">
  <li>foo</li> index 0
  <li>bar</li> index 1
  <li>baz</li> index 2
</ul>

答案 2 :(得分:1)

您不需要将对象重新包装两次。

您可以使用:eq()jquery选择器将装饰集限制为单个装饰:

http://api.jquery.com/eq-selector/ - 例如:

$("#myId:eq(" + myIndex + ")")

如果您只想按索引选择对象,这就是它应该是的方式。更高性能(少一点装饰)和最佳实践。