如何用jQuery选择not-direct left sibling <span>?</span>

时间:2009-09-22 06:47:34

标签: jquery selector

<span>This is the span I want to select</span>
<div>something here</div>
<a id="start"></a>

假设只能访问$('#start'),

我尝试了$('#start')。prev('span')但没有工作。

2 个答案:

答案 0 :(得分:4)

 $('#start')
    .parent()       // gets one up
    .find('span')   // gets the span element

same code使用jsbin沙箱


注意:

你不能使用prev(),因为它只获取前一个标记,而span,来自锚标记不是前一个是前一个

来自jQuery Documentation

  

获取一组元素,其中包含每个匹配元素集的唯一先前兄弟节点。   使用可选表达式筛选匹配的集。 只返回前一个兄弟姐妹,而不是所有以前的兄弟姐妹。

prev([filter])

过滤器用于过滤前一个标记是否包含多个标记,如:

<div>
   <span></span>
   <a></a>
</div>
<a id="a2"></a>

获取您使用的范围:

$('#a2').prev('span')

答案 1 :(得分:0)

奇怪的是,似乎prevAll倒退,从起始元素后面的第一个开始然后回来。我想是有道理的。无论哪种方式,以下都适合我:

//jquery :

$(document).ready(function(){
    $("#start").prevAll("span:first").css("font-weight", "bold");
  });

// html: 


<span>This is the span I don't want to select</span>
<span>This is the span I want to select</span>
<div>something here</div>
<a id="start">Stuff</a>