Как выбрать не-прямой левый брат <span>с помощью jQuery? - PullRequest
1 голос
/ 22 сентября 2009
<span>This is the span I want to select</span>
<div>something here</div>
<a id="start"></a>

Предположим, можно получить доступ только к $ ('# start'),

Я пробовал $ ('# start'). Prev ('span'), но не работает.

Ответы [ 2 ]

4 голосов
/ 22 сентября 2009
 $('#start')
    .parent()       // gets one up
    .find('span')   // gets the span element

тот же код с использованием jsbin песочница


Примечание:

Вы не можете использовать prev (), поскольку он получает только предыдущий тег, а span, от тега привязки, не является предыдущим, является предыдущим из предыдущего

из jQuery Documentation

Получить набор элементов, содержащий уникальные предыдущие родственные элементы каждого из сопоставленного набора элементов. Используйте необязательное выражение для фильтрации соответствующего набора. Возвращается только непосредственно предыдущий брат , а не все предыдущие брат.

prev([filter])

фильтр должен фильтровать, если предыдущий тег содержит более одного, например:

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

чтобы получить диапазон, который вы используете:

$('#a2').prev('span')
0 голосов
/ 22 сентября 2009

Странно, кажется, что 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>
...