jQuery slideToggle just shows and hides but doesn&

2019-07-18 17:36发布

In this example my div container just hides and shows but doesn't do the awesome jQuery animation.

$('.button').click(function() {
    $('.class1').slideToggle();
});

Can anybody say me why? I know that animations on tables don't work correctly but on divs it should be okay.

UPDATE Thanks for all the answers. The information I was missing is that position absolute removes the element from the DOM. And yeah I know I should put the style in a css--this version was just for quick testing, but thanks for the answers!!!

4条回答
看我几分像从前
2楼-- · 2019-07-18 18:02

use JQuery UI

$(document).ready(function() {
    $('.button').click(function() {
        $('.class1').toggle('slide',{direction: 'up'},500);
    });
});
查看更多
\"骚年 ilove
3楼-- · 2019-07-18 18:16

Artur, my recommendation is to restructure your code entirely, there is way too much going on. Short and simple is always best. I'd start by getting rid of the "style" attributes in your html. Make sure to put styles in CSS (it's cleaner and easier to maintain -- much better than deleting styles from multiple tags).

I just made you a demo, hope it helps! Feel free to use it! Happy coding! http://jsfiddle.net/7xzMa/17/

查看更多
Ridiculous、
4楼-- · 2019-07-18 18:18

.slideToggle() animates the height of an element from 0% - 100%, hiding its children as it goes.

By using position:absolute throughout your fiddle, you are removing the child elements from the flow of the DOM and interfering with the ability of the parent element to incrementally hide its children.

If you set overflow to hidden, and remove position:absolute from the children, this works properly.

http://jsfiddle.net/7xzMa/6/

查看更多
何必那么认真
5楼-- · 2019-07-18 18:23

UPDATED YOUR FIDDLE - http://jsfiddle.net/7xzMa/14/ --- cleaned the divs and you should place css into a style sheet so its easier to edit. "display" should be set to "none". unless you would like it to be visible then click to hide. http://jsfiddle.net/7xzMa/8/

查看更多
登录 后发表回答