.slideToggle () на одном DIV вместо всех других с тем же классом - PullRequest
0 голосов
/ 10 марта 2012

Я пытаюсь создать меню с DIV для закусок, супов и т. Д. Я использую вкладки абзацев в качестве переключателя. Все мои переключатели имеют одинаковые классы «переключения». Все области DIV имеют один и тот же класс «выбор». Как мне сделать это, когда я нажимаю на переключатель, он просто показывает класс DIV прямо над ним. Извините, моя кодировка грязная.

JQuery:

$(document).ready(function(){
$('.toggle').click(function(){
    $('.selection').slideToggle("slow");
  });<br>
});

CSS:

.selection,.toggle
{
    width: 700px;
    margin-top: 0px;
    margin-bottom: 0px;
    margin-right: auto;
    marign-lift: auto;
    padding: 5px;
    background: white;
    border: solid 2px gray;
}
.toggle
{
    text-align: center;
}
.selection
{
    display: none;
    text-align: left;
}

HTML:

<div class="selection">
    Special Appetizer 8.95 <br>
    Small Appetizer Plate 7.50
</div>
<p class="toggle">Appetizers</p>

<div class="selection">
    Broccoli & Cream Soup $5.50 <br>
    Clam Chowder 7.50
</div>
<p class="toggle">Soups</p>

<div class="selection">
    Fried Rice 4.95 <br>
</div>
<p class="toggle">Rice</p>

Ответы [ 2 ]

2 голосов
/ 10 марта 2012

Вы можете настроить таргетинг на предмет, относящийся к тому, на который щелкнули, вот так:

$(document).ready(function(){
    $('.toggle').click(function(){
        $(this).prev('.selection').slideToggle("slow");
    });
});

Это позволит получить нажатый элемент .toggle, получить предыдущий элемент .selection и сдвинуть только этот элемент.

Вы можете увидеть, как это работает здесь: http://jsfiddle.net/jfriend00/2zJ8z/

Я бы посоветовал улучшить его, чтобы вы могли щелкнуть по элементу .selection, чтобы он исчез, так как переключение для исследования с помощью мыши немного легче:

$(document).ready(function(){
    $('.toggle').click(function(){
        $(this).prev('.selection').slideToggle("slow");
    });

    $('.selection').click(function(){
        $(this).slideToggle("slow");
    });
});​

Вы можете увидеть это незначительное улучшение здесь: http://jsfiddle.net/jfriend00/JrhNz/

Если вы хотите, чтобы другие открытые объекты закрывались при открытии нового, вы можете использовать это:

$(document).ready(function(){
    $('.toggle').click(function(){
        var prev = $(this).prev('.selection');
        $(this).siblings('.selection').not(prev).slideUp("slow");
        prev.slideToggle("slow");
    });

    $('.selection').click(function(){
        $(this).siblings('.selection').slideUp("slow");
        $(this).slideToggle("slow");
    });
});​

Демонстрация этой опции здесь: http://jsfiddle.net/jfriend00/JrhNz/6/

0 голосов
/ 10 марта 2012

Я думаю, что вы ищете .prev():

$('.toggle').click(function(){
    $(this).prev('.selection').slideToggle("slow");
});
...