Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите разобраться с .next() (https://javascript.ru/forum/jquery/29728-pomogite-razobratsya-s-next.html)

skreets 09.07.2012 12:17

Помогите разобраться с .next()
 
Здравствуйте!
Помогите разобраться в такой проблеме, есть верстка:
<div class="partnersBox">
    <img src="/images/partner/bb_expo.png" />
    <a href="javascript:;" class="aboutPart"><span>Барбекю Экспо</span></a>
    <a href="javascript:;">Благодарность</a>
    <div class="aboutPartText">
      текст
    </div>
    
  </div>


и к нему условие:
$(".aboutPart").click(function () {
  $(this).next(".aboutPartText").slideToggle("slow");


И оно не работает потому что за ссылкой с классом "aboutPart" идет еще одна ссылка без класса. Если убрать ссылку без класса то все начинает работать. Но вторая ссылка нужна и я решил этот вопрос таким способом:
$(".aboutPart").click(function () {
  $(this).next().next().slideToggle("slow");

Тоесть выбираю второй элемент. Я знаю что это не првильное решение проблеммы!
Обьясните пожалуйста в чем моя ошибка почему по клику на ссылку не происходит действия с элементом класс у которого "aboutPartText"?

vadim5june 09.07.2012 12:31

next выбирает именно следующий элемент
http://api.jquery.com/next/
Вы правильно сделали
cmd показал как можно с помощью nextAll сделать

cmd 09.07.2012 12:40

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>

  <div class="partnersBox">
    <a href="javascript:;" class="aboutPart"><span>Барбекю Экспо</span></a>
    <a href="javascript:;">Благодарность</a>
    <div class="aboutPartText">
      текст
    </div>
  </div>
  
<script>
$(".aboutPart").click(function () {
	$(this).nextAll(".aboutPartText").css("background", "yellow");
});
</script>

</body>
</html>

skreets 09.07.2012 12:44

я не могу понять почему .next() игнорирует селектор .aboutPartText?

vadim5june 09.07.2012 12:48

Цитата:

Сообщение от skreets (Сообщение 187427)
я не могу понять почему .next() игнорирует селектор .aboutPartText?

ну он же не сосед там же написано по ссылке что выбирает только следующий nextSibling если совпадает селектор-а у Вас не следующий а через элемент

Description: Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector.

skreets 09.07.2012 12:51

Спасобо большое! Тепрь все понятно :)

Deff 09.07.2012 13:31

skreets, Обычно так универсальней, работает и при вложенности

$(this).parent(".partnersBox").find(".aboutPartText:first").slideToggle("slow")


Часовой пояс GMT +3, время: 01:56.