2

好的,所以我试图在 jquery 中重新创建“slideUp”和“slideDown”功能,但是当使用 flexbox 进行显示时!

jQuery.fn.toggleFlexbox = function() {
    var elm = $(this[0]);
    if(elm.css('display') === "none"){
        elm.css('display', '-webkit-flex');
    }else{
        elm.slideUp('fast');
    }
};

这就是我已经走了多远(目前上面的代码可以工作,但是当我们用它从“none”切换到“-webkit-flex”时不会滑动,我尝试了以下)

elm.animate({"display":"-webkit-flex"}, 1000);

这根本无法工作,没有动画,没有错误或任何东西......


奇怪的是我这样做是因为如果我用我的所有对象(类“设置”的元素)开始页面,我想加载为显示 flex,然后隐藏它们

$('.settings').hide();

当我单击以向下滑动“设置”部分时,这似乎没有应用弹性框,但是我已经转到另一个页面并在行为正确时返回它......非常奇怪!


奇怪的是,我无法在提琴手中重新创建它...... http://jsfiddle.net/FzqA7/ ..

4

1 回答 1

1

如果我正确理解了您的问题(这是一个很大的问题),听起来您遇到了我前一段时间一直在努力解决的问题,即,一旦启动,只有一半的动画会起作用(一旦滑下来, slideUp 不起作用,反之亦然)。

我通过在动画的第一次迭代之后添加“return”来解决它,尽管这是一个点击事件触发器,所以结束该函数对于多个排列至关重要。

尝试:

    jQuery.fn.toggleFlexbox = function() {
        var elm = $(this[0]);
        if(elm.css('display') === "none"){
            elm.css('display', '-webkit-flex');
            return;
        }else{
            elm.slideUp('fast');
            return;
        }
    };

对不起,如果我完全误解了你的问题,但这有点模棱两可......

于 2012-08-29T14:00:48.173 回答