Mam div w div. Na obciążeniu strony powinny być ukryte, wtedy, gdy wyczerpuję funkcję slideDown() na zewnętrznym div, chcę, aby wewnętrzny div pozostać ukryty. Jak mogę to osiągnąć?

<script>
$(function(){
    $('.body').hide();
    $('.display').click(function(){
        $(this).closest('.wrapper').find('.body').slideDown();
    });
});
</script>

<div class="wrapper">
    <a class="display" href="#">Display Outer</a>
    <div class="body">
        Now displaying outer div
        <div class="wrapper">
            <a class="display" href="#">Display Inner</a>
            <div class="body">
                Now displaying inner div
            </div>
        </div>
    </div>
</div>

Oto przykład tego nie działa: http://jsfiddle.net/b7tpt/

0
Andrew 27 wrzesień 2011, 23:38

3 odpowiedzi

Najlepsza odpowiedź

Powodem, dla którego nie działa, jest używanie Znajdź. Znajdź przemierz wszystkie poziomy, aby znaleźć mecze, gdy Dzieci wyróżniałyby się pojedynczy poziom. Więc użyj find('.body:first') lub dzieci (". Ciało")

$(function(){
    $('.body').hide();
    $('.display').click(function(){
        $(this).closest('.wrapper').find('.body:first').slideDown();
    });
});

Zaktualizowany przykład

LUB

$(function(){
    $('.body').hide();
    $('.display').click(function(){
        $(this).closest('.wrapper').children('.body').slideDown();
    });
});

Zaktualizowany przykład

2
amit_g 27 wrzesień 2011, 19:57

Próbować -

$('.display').click(function(){
    $(this).siblings('.body').slideDown();
});

Myślę, że $(this).closest('.wrapper') poruszał się w górę drzewa Dom i znajdowała najwyżej najbardziej wrapper DIN, a następnie otwierając wszystkie klasy body znajdujące się pod spodem. Korzystanie z siblings powinno uzyskać element za pomocą klasy body, która jest bezpośrednio pod klikniętym linkiem.

Demo - http://jsfiddle.net/pmgvj/1/

1
ipr101 27 wrzesień 2011, 19:59

Spróbuj tego: http://jsfiddle.net/kf6gk/

0
Alexey Reznikov 27 wrzesień 2011, 19:52