JQuery Slidedown первые элементы дочернего уровня

StackOverflow https://stackoverflow.com/questions/3697053

  •  02-10-2019
  •  | 
  •  

Вопрос

У меня есть один класс Divs («открытых»), содержащий другой класс Divs («предметы»), как это:

<div class="open">
    <div class="item">
    this is a test 1
    </div>

    <div class="item">
    this is a test 2
    </div>
</div>

То, что я хочу сделать, это Slidedown всей «элемента» класса Divs, которые находятся в классе «Открытый», который нажал.

До сих пор у меня есть

$(document).ready(function () {

    $('.open').click(function () {

        $(this).find(':first-child').slideDown('1000');

    });

Но это не работает. Какие-либо предложения?

Спасибо, Джон

Это было полезно?

Решение

Вместо :first-child вы хотите непосредственные дети, который вы можете получить в этом случае, используя .children(), как это:

$('.open').click(function () {
  $(this).children().slideDown('1000');
});

:first-child Для получения первого дочернего элемента на каждом уровне (и в каждой «ветви»), .children() или детский селектор (>) Для получения всех немедленных / «первого уровня» детей.

Другие советы

Как насчет

$(".open").click(function() {
    $(this).children().slideDown(1000);
});

Во-первых, я предполагаю, что вы на самом деле закрываете $(document).ready, поскольку в блоке кода вы разместили, он не закрыт. Убедитесь, что вы делаете это в вашем коде.

Во-вторых, ты не просто ищешь children() из .open? В этом случае вы хотите

$(document).ready(function() {
  $('.open').click(function() {
    $(this).children('.item').slideDown('1000');
  });
});

Отредактировано: Благодаря комментариям я удалил live() предположение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top