вопрос о методе eq ()

#jquery

#jquery

Вопрос:

Например, у меня есть такая HTML-структура:

 <ul>
    <li><a class="ac_list_a">some text</a></li>
    <li><a class="ac_list_a">some text</a></li>
    <li><a class="ac_list_a">some text</a></li>
    <li><a class="ac_list_a ac_current_a">some text</a></li>
    <li><a class="ac_list_a">some text</a></li>
    <li><a class="ac_list_a">some text</a></li>
</ul>
  

Мне нужно получить следующий или предыдущий ac_list_a из ac_current_a .

Я пытался сделать вот так:

 var all_a = $('.ac_list_a,.ac_current_a').eq('.ac_current_a').next();
  

Но это не работает.

Как бы вы это решили?

Обновить

То есть, конечно, я могу сделать это тупым способом, присвоив класс всем li элементам, затем используя

 parents(class).next().find(a.class)
  

Но возможно ли сделать это более динамичным способом? Потому что структура HTML может измениться в будущем.

Ответ №1:

Я бы, вероятно, использовал:

 $('.ac_current_a').parent().next().children()
  

Демонстрация:jsfiddle.net/dL87J /

Ответ №2:

eq принимает целочисленный индекс для функции, а не селектор. Однако вы можете использовать index функцию для поиска этого индекса, а затем использовать eq .

 var index = $('.ac_list_a,.ac_current_a').index($('.ac_current_a'));
var all_a = $('.ac_list_a,.ac_current_a').eq(index 1);
  

Ответ №3:

Удалить eq() :

 $('.ac_list_a .ac_current_a').parent().next();
$('.ac_list_a .ac_current_a').parent().prev();
  

Комментарии:

1. Это возвращает пустой объект jQuery, поскольку у ссылки нет родственных файлов.