У меня есть этот 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);
});
Постарайтесь установить его с помощью абсолютного положения
.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;
}
Демо: скрипка
Сначала скройте все внутренние 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);
});
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();
}
});
Попробуйте это
$('.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);
}
});
Почему бы не добавить 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();
});