1

我有一些图像,我使用 jQuery 将每个图像包装在<li>. 然后我想按索引选择这些列表元素之一。

HTML

<div id="slider">
  <img src="..." alt="" />
  <img src="..." alt="" />
  <img src="..." alt="" />
</div>

jQuery

$('#slider').children().wrap('<li />');
$('#slider').wrapInner('<ul class="sliderUl" />');

var sliderLi = $('#slider').find('li');
$(sliderLi + ':eq(2)').addClass('test');

这不起作用,因为列表元素是动态创建的,因此尽管变量似乎已创建并且可以正常工作,但它不适用于“eq”。任何想法我还能做什么?

我必须使用列表元素作为变量来做到这一点。

4

5 回答 5

1

您尝试使用eq()滑块:eqLi 是对象而不是选择器。

改变

$(sliderLi + 'eq(2)').addClass('test');

$(sliderLi).eq(2).addClass('test');

或者,使用:eq

$('#slider').find('li:eq(2)').addClass('test');
于 2013-08-05T14:37:32.147 回答
1

尝试这个:

$(sliderLi).eq(2).addClass('test');

您可以将:eq()伪与字符串选择器一起使用,但sliderLi它是一个 jQuery 对象,而不是字符串。

或者,您可以这样做:

var sliderLi = $('#slider').find('li:eq(2)');

或者

var sliderLi = $('#slider li:eq(2)');
于 2013-08-05T14:37:34.133 回答
0
$('#slider').find('li:eq(2)').addClass('test');

就像一个注释,考虑到eq索引是从零开始的

于 2013-08-05T14:38:00.953 回答
0
$('#slider li:eq(2)').addClass('test');
于 2013-08-05T14:39:11.257 回答
0

你可以使用这个:

$(function(){
 $('#slider').children().each(function(){
    $(this).wrap('<li />');
 });
 $('#slider').wrapInner('<ul class="sliderUl" />');
 $(".sliderUl").children("li:eq(2)").addClass("test");
});

工作小提琴

于 2013-08-05T14:43:20.560 回答