Показать / Скрыть Div в JQuery

0

У меня есть этот JSFiddle для справки: http://jsfiddle.net/422MP/38/

Зеленые прямоугольники плавают справа, поэтому я хочу, чтобы они показывали, когда расширяется его родительский div. Если щелкнуть другой div, я хочу, чтобы предыдущий div зеленый ящик скрылся, и новый div, чтобы показать. Есть идеи по этому поводу? Вот js:

$('.sidebar').on('click', function() {
    $('.sidebar').not(this).animate({width: 50}, 400);
    if ($(this).width() == 50)
        $(this).animate({width: 150}, 400);
    else
        $(this).animate({width: 50}, 400);
});

5 ответов

2

Постарайтесь установить его с помощью абсолютного положения

.inner {
    width: 50px;
    height: 50px;
    background-color: green;
    position: absolute;
    left: 100px;
}
.sidebar {
    height: 300px;
    width: 50px;
    display: inline-block;
    position: relative;
    overflow: hidden;
    /* left: 565px;*/
    /*position: relative;i*/
    margin:0 0px 0 10px;
}

Демо: скрипка

  • 0
    Блестяще, спасибо тебе.
0

Сначала скройте все внутренние div и покажите ребенку внутреннюю текущую боковую панель

Добавьте двойные строки кода с помощью js

$('.sidebar').on('click', function() {

$ ( "внутренний". ) скрывать(). $ (это).children( 'внутренний'.) шоу().

$('.sidebar').not(this).animate({width: 50}, 400);
if ($(this).width() == 50)
    $(this).animate({width: 150}, 400);
else
    $(this).animate({width: 50}, 400);

});

0

CSS:

.inner{display:none;}

JavaScript:

$('.sidebar').on('click', function() {
    $('.sidebar').not(this).animate({width: 50}, 400);
    if ($(this).width() == 50){
        $(this).animate({width: 150}, 400);
        $(".inner").fadeOut();
        $(this).children(".inner").fadeIn();
    }
    else{   
        $(this).animate({width: 50}, 400);
        $(".inner").hide();
    }        
});
0

Попробуйте это

$('.inner').hide();
$('.sidebar').on('click', function() {
    $('.inner').hide();
    $('.sidebar').not(this).animate({width: 50}, 400);
    if ($(this).width() == 50){
        $(this).animate({width: 150}, 400);
        $(this).find('.inner').show();
    }
    else{
        $(this).animate({width: 50}, 400);
    }
});

Посмотрите скрипку

0

Почему бы не добавить display: none для определения внутреннего класса, а затем сделать что-то вроде этого с помощью jQuery:

$('.sidebar').on('click', function() {
    //$('.sidebar').animate({width: 50}, 400);
    if ($(this).width() == 50)
        $(this).animate({width: 150}, 400).children(".inner").show();
    else
        $(this).animate({width: 50}, 400).children(".inner").hide();
});

jsFiddle

Ещё вопросы

Сообщество Overcoder
Наверх
Меню