jQuery - 使用'eq()'动态创建元素作为选择器

时间:2013-08-05 14:36:14

标签: jquery html

我有一些图像,我使用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'一起使用。任何想法我还能做什么?

我必须使用列表元素作为变量。

5 个答案:

答案 0 :(得分:1)

您尝试使用eq(),如:eq sliderLi是对象而非选择器。

更改

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

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

或,使用:eq

$('#slider').find('li:eq(2)').addClass('test');

答案 1 :(得分:1)

试试这个:

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

您可以将:eq()伪用于字符串选择器,但sliderLi是jQuery对象,而不是字符串。

或者,你可以这样做:

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

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

答案 2 :(得分:0)

$('#slider').find('li:eq(2)').addClass('test');

正如注释一样,请考虑eq索引为零

答案 3 :(得分:0)

$('#slider li:eq(2)').addClass('test');

答案 4 :(得分:0)

您可以使用:

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

Working FIDDLE