jQuery选择器帮助获取几个组的最后一个元素?

时间:2012-09-18 21:35:02

标签: javascript jquery jquery-selectors

我有这种类型的HTML

<div id='foo'>
  <ol>
   <li>
      <a/>
      <a/>
      <ol><li><a/><a/><a/></li></ol>
   </li>
   <li>
      <a/>
      <a/>
      <ol><li><a/><a/><a/></li></ol>
   </li>
   <li>
      <a/>
      <a/>
      <ol><li><a/><a/><a/></li></ol>
   </li>
  </ol>
</div>

如何在每个第一级'li'中选择最后一个'a'标记?我尝试使用:最后但我只得到最后一个'a'。注意我不希望嵌套在'ol'中的'a'元素嵌套。 I.E.选择器应该产生3'a'标签。任何提示或示例都会很棒!感谢。

4 个答案:

答案 0 :(得分:3)

$('#foo > ol > li > a:last-of-type');

您还必须在li和a之间使用子选择器,否则它将返回所有作为最后子项的元素。

jsFiddle示例:http://jsfiddle.net/48uQM/3/

更新了我使用红色背景颜色的答案,因此更容易看到。

正如评论中所提到的,这不适用于IE8或更早版本或任何不支持的浏览器:last-of-type

在IE8和旧浏览器中工作是另一种解决方案

http://jsfiddle.net/zcH8D/

$(document).ready(function() {
    $li = $('#foo > ol > li');
    $li.each(function () {
      $a = $(this).find(">a");
      $a.filter(":last").addClass('last');                
    });        
});​

答案 1 :(得分:2)

检查一下:

$("div ol li ol").prev().css('background-color', 'red');

jsFiddle

答案 2 :(得分:1)

$('#foo > ol > li > a').filter(function(){
    return !$(this).next('a').length
})

http://jsfiddle.net/mBwug/

答案 3 :(得分:0)

jQuery('#foo>ol>li a:last-child'); 

将为您提供第一级li元素中的最后一个标记