2013-08-28 2 views
2

Я присваивающей overflow: hidden, но это не похоже на работуПереполнение скрытый не работает с JQuery .css события нажатия

jsFiddle

HTML

<ul class="list-container"> 
    <li>items items</li> 
    <li>items items</li> 
    <li>items items</li> 
    <li>items items</li> 
    <li>items items</li> 
    <li>items items</li> 
    <li>items items</li> 
    <li>items items</li> 
    <li>items items</li> 
</ul> 
<a href="#" class="hide_list">Hide list</a> 

JQuery

$('.hide_list').click(function() { 
     $('.list-container').animate({width: "2px"}); 
     $('.list-container').css("overflow","hidden"); 
    }); 

Я пытаюсь добиться эффекта слайд-эффекта на div. Даже если бы был другой способ сделать это, я не уверен, почему это не работает.

+2

вам может понадобиться указать высоту? –

+0

@Tim Это не сработало, к сожалению –

+0

переместите настройку 'overflow: hidden' в css; или до анимации –

ответ

3

Попробуйте поменять местами.

$('.hide_list').click(function() { 
    $('.list-container').css("overflow","hidden"); 
    $('.list-container').animate({width: "2px"}); 
}); 
+0

Ничего себе! это сработало, как странно. Надеюсь, мы сможем поддержать этот вопрос, чтобы помочь другим пользователям.Это застало меня на некоторое время, поскольку я думал, что ошибка была где-то еще в моем сценарии, вызывающем проблему. –

1

Я думаю, что jquery удаляет переполнение скрытой, если вы установите высоту или ширину на что-то отличное от 0 при использовании анимации. Использование обратного вызова для метода одушевленного решает его:

http://jsfiddle.net/jonigiuro/9s9vW/5/

$('.hide_list').click(function() { 
    $('.list-container').animate({height: "2px"}, function() { 
     $('.list-container').css("overflow","hidden"); 
    }); 
}); 
+0

Это сработало, спасибо. Но я просто собираюсь их обменивать, потому что это тоже работает. +1 –

0

Это потому, что вы должны вызвать переполнение: скрытый раз анимация заканчивается. Во время анимации jquery добавляет стили inline, и они перезаписывают ваш .css («переполнение», «скрытый»). Вот как это должно быть написано http://jsfiddle.net/krasimir/9s9vW/6/

$('.hide_list').click(function() { 
    $('.list-container').animate({width: "2px"}, function() { 
     $('.list-container').css("overflow", "hidden"); 
    }); 
}); 
+0

Это сработало, спасибо. Но я просто собираюсь их обменивать, потому что это тоже работает. +1 –

0

Попробуйте записать это так:

 $("#div").stop(true,false).animate({ 
      width: '2px' 
     },500); 

Не беспокойтесь о .stop (истина, ложь) - все, что делает это обеспечение мероприятия не работает.

1

Есть ли причина, по которой вы устанавливаете переполнение с помощью jquery, это может быть сделано с помощью css, а затем переполнение не удаляется. Кроме того, при использовании кода в нем элементы li получают дополнительную строку. Это можно остановить, предоставив li-элементам ширину.

+0

Причина, по которой я устанавливаю переполнение скрытой, заключается в том, что когда она была анимирована до '2px', она все еще показывалась, как будто переполнение было принято как стандарт –

0

Если вы пытаетесь скрыть «список-контейнер» с эффектом вы, вероятно, следует использовать это:

$('.hide_list').click(function() { 
    $('.list-container').animate({height: "2px"}); 
    $('.list-container').hide(2000); 
}); 

или без эффекта

$('.hide_list').click(function() { 
    $('.list-container').animate({width: "2px"}); 
    $('.list-container').css("display","none"); 
}); 
0

У вас есть ошибка в вашем JavaScript. попробуйте этот код:

$('.hide_list').click(function() { 
    $('.list-container').animate({width: "2px"}); 
$('.list-container').css({"overflow":"hidden"}); 
}); 
+0

Исходный синтаксис также работает, см. Другие ответы. –

0

своп ниже код из

$('.list-container').animate({width: "10px"}); 

$('.list-container').css("overflow","hidden"); 

в

$('.list-container').css("overflow","hidden"); 
    $('.list-container').animate({width: "10px"}); 
Смежные вопросы