Как я могу изменить эту функцию Jquery (переключатель) - PullRequest
0 голосов
/ 21 марта 2011
<head>
<script type="text/javascript">
$(document).ready(function(){
$(".open_list").hide();
$(".trigger").click(function(){
    $(this).toggleClass("active").next().slideToggle("800");
   });
});
 </script>

Я делаю список с некоторым скрытым div в нем, и я сделал эту функцию jquery, чтобы сделать это.Дело в том, что эта функция делает, что когда вы нажимаете на ссылку триггера, она показывает вам div, следующий за open_list.

Я ищу другую функцию, которая позволяет мне то же самое, но активирует divэто следует за .open_list, но с определенным классом.

Таким образом, он будет игнорировать элементы div, следующие за open_list, у которых нет этого класса.

Я занимался этим весь день, и я не могу найти правильный способ сделать это.Кто-нибудь, кто знает это, пожалуйста?

поэтому я поставил скрипт:

 <script type="text/javascript">
$(document).ready(function(){
$(".open_list").hide();
$(".trigger").click(function(){
  $(this).toggleClass("active").nextAll('.campaigns_list').slideToggle("800");
});

});

Но все равно не работает.Мне нужно, чтобы h1 вообще не двигался, когда открыты div.

Ответы [ 3 ]

1 голос
/ 21 марта 2011

Большинство методов обхода jQuery (next, parent и т. Д.) Принимают необязательный параметр селектора:

$(this).nextAll('.someclass').first().slideToggle(800);

Этот код выберет братьев и сестер элемента, который имеет класс someclass и выполните анимацию slideToggle.

1 голос
/ 21 марта 2011

это действительно просто - просто не используйте next (), а nextAll ()

<script type="text/javascript">
  $(document).ready(function(){
    $(".open_list").hide();
    $(".trigger").click(function(){
      $(this).toggleClass("active").nextAll('.yourClass').slideToggle("800");
    });
  });
</script>

Если вы хотите выбрать только один элемент, добавьте «.eq (0)» после .nextAll () функция.

Надеюсь, я вам помог.С наилучшими пожеланиями, Якуб.

1 голос
/ 21 марта 2011

Вы можете использовать nextAll(), отфильтрованный по вашему селектору, а затем получить элемент first() этого списка:

$(".trigger").click(function(){
    $(this).toggleClass("active").nextAll('.yourClass').first().slideToggle("800");
});

Проблема, с которой вы, вероятно, столкнулись, заключается в том, что если вы сделаете next('.yourClass') нетэлементы будут возвращены, если ближайший брат или сестра не имеют .youClass

...