如何找到具有“活跃”类的最近的li

时间:2014-01-27 15:00:06

标签: javascript jquery jquery-selectors

我正在尝试生成一些jQuery,它会找到具有class属性的最接近的列表项,并在它之后直接插入一些html?

我有以下内容但这需要工作..它来自on click事件()

$('.controls').on('click.add', function()
{               
       $(this).parent().closest('li.active').insertAfter('<p>HTML</p>');
});

任何人都可以提供帮助 - 在这种情况下,我想要选择第3个li(基于最后一个'活动'列表项的类) - 并在其后插入一些简单的HTML。

<ul class="controls">
  <li class="active"></li>
  <li class="active"></li>
  <li class="active"></li>
  <li class="inactive"></li>
  <li class="inactive"></li>
</ul>
<a href="#" class="add"> Add Prize</a>

4 个答案:

答案 0 :(得分:1)

“最简单的解决方案是使用pop,它访问数组中的最后一个元素。

var lastClass = $('div').attr('class').split(' ').pop();

请注意,pop也会从数组中删除该元素,但由于您没有对其进行任何其他操作,因此这不是问题。“

被盗:jQuery - find last class on the element

答案 1 :(得分:0)

尝试这样做:

$('.add').on('click', function()
{
     $(this).prev().find('li.active:last').after('<p>HTML</p>');

});

答案 2 :(得分:0)

试试这个:

var $controls = $('.controls');
$('.add').on('click', function() {               
    $controls.find('li.active:last').after('<li>HTML</li>');
});

另请注意,您可能需要.after而不是.insertAfter。另外,如评论中所述,您不应将p作为ul的孩子插入,因此我将其更改为li

答案 3 :(得分:0)

$(".controls li.active").last().after('<p>HTML</p>');