2015-05-27 80 views
0

,如果我有这样的HTML结构 ?我怎样才能-2项目:<p>C</p>得-2类似于jQuery对象:最后一个孩子

<div class='m'> 
<span><p>A</p></span> 
<span><p>B</p></span> 
<span><p>C</p></span> 
<span><p>D</p></span> 
<div> 

将这项工作?

div.m > span:nth-last-child(2) > p 

>> <span><p>C</p></span> 

回答

1

您可以使用.eq(index)选择

$(".m span").eq(2).text() 

Fiddle

+1

如果什么之前得到的元素:警报( $(“。numbers span”)。eq(-2).text()); ?? –

+1

-2将采取-2元素 –

1

如果您解决您的HTML(您的交易<div>实际上是一个开始标签),nth-last-child应该很好地工作:

alert($("div.m > span:nth-last-child(2) > p").text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='m'> 
 
    <span><p>A</p></span> 
 
    <span><p>B</p></span> 
 
    <span><p>C</p></span> 
 
    <span><p>D</p></span> 
 
</div>

0

我想CSS不提供反向导航,所以,没有以前的CSS选择器,可以使用jQuery previous()来获取-2位置的元素。

$(".m span:last").previous().find('p').css('background-color', 'red'); 

,或者你可以简单地用jQuery eq(-2)做这样的:

$(".m span").eq(-2).find('p').css('background-color', 'red'); 

它为所有的情况下工作,最后一个孩子

<div class='m'> 
    <span><p>A</p></span> 
    <span><p>B</p></span> 
    <span><p>C</p></span> 
    <span><p>D</p></span> 
<div> 

<div class='m'> 
    <span><p>A</p></span> 
    <span><p>B</p></span> 
    <span><p>X</p></span> 
    <span><p>P</p></span> 
    <span><p>C</p></span> 
    <span><p>D</p></span> 
<div>