3

我有这种类型的 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”标签?我尝试使用 :last 但我只得到最后一个'a'。请注意,我不希望嵌套在嵌套 'ol' 中的 'a' 元素。IE 选择器应该产生 3 个“a”标签。任何提示或示例都会很棒!谢谢。

4

5 回答 5

3

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

您还必须在 li 和 a 之间使用子选择器,否则它将返回所有作为最后一个子元素的 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');                
    });        
});​
于 2012-09-18T21:55:35.923 回答
2

检查这个:

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

jsFiddle

于 2012-09-18T21:51:19.490 回答
1
$('#foo > ol > li > a').filter(function(){
    return !$(this).next('a').length
})

http://jsfiddle.net/mBwug/

于 2012-09-18T21:37:40.870 回答
0
jQuery('#foo>ol>li a:last-child'); 

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

等等

于 2012-09-18T21:37:45.533 回答
-1

尝试这个

​//console.log($('ol li ol li a:last'))

var lists = $('ol li ol li'); 
$.each(lists, function(i){
    console.log($(this).find('a:last'))
});
​

没有循环你可以试试这个

 console.log($('ol li ol li > a:last-child');)

小提琴没有循环

小提琴

于 2012-09-18T21:39:07.990 回答