我不确定我会怎么说这个问题,所以我在网上找不到任何关于它的东西,但是有什么理由要用jquery“选择”一个元素两次?我正在尝试理解的应用程序中包含多个这样的示例。
var t = $($("#slider li")[currentIndex]);
IPS.SetTheme($($("#slider li")[currentIndex]));
$($("#location li")[currentIndex]).addClass("selected");
出于范围原因,它是否与this
偶尔写为$(this)
的原因类似?
答案 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 + ")")
如果您只想按索引选择对象,这就是它应该是的方式。更高性能(少一点装饰)和最佳实践。