尝试使用add class来模拟切换功能

时间:2012-10-08 10:22:34

标签: jquery jquery-animate

我动态创建一个div并将此动态div添加到另一个div中。我试图动画div,我用来添加/删除类和hasclass函数,以具有某种切换功能。但我的代码不能正常工作。看看这部分并告诉我有什么问题。

if(oDiv.hasClass('test')) {
return oDiv.animate({ opacity: 'toggle', marginTop:('-' + allChildDivHeight + 'px')    },  speed, easing, callback);
$oDiv.removeClass('test');        
    }
    else
    {

 return oDiv.animate({ opacity: 'toggle', marginTop:('-' + (margin_top+allChildDivHeight )+ 'px') }, speed, easing, callback);
 oDiv.addClass('test');

    }

我可以使用jquery切换功能来产生这种效果,如

$('.btnName').click(function() {
$('#panel').toggle(function() {
$(this).animate({ 
 // style change
}, 500);
},
function() {
$(this).animate({ 
 // style change back
}, 500);
});

上面的代码只是一个示例。我只需要知道我可以使用类似于切换功能的东西。

我用下面的方式写了一下,使用切换但仍无法正常工作

oDiv.toggle(function()
{
alert('class'+allChildDivHeight );
return oDiv.animate({ opacity: 'toggle', marginTop:('-' + allChildDivHeight + 'px') }, speed, easing, callback);

},function()
{
alert('no class'+(margin_top+allChildDivHeight));
return oDiv.animate({ opacity: 'toggle', marginTop:('-' + (margin_top+allChildDivHeight )+ 'px') }, speed, easing, callback);
});

请查看我最顶层的代码。完整代码在这里http://jsfiddle.net/tridip/PTdsz/8/

请到那里查看我的完整代码并告诉我为什么总是控件进入此if if(oDiv.hasClass('test')) {}

为什么删除类不像$oDiv.removeClass('test');

那样工作

请帮忙。感谢

1 个答案:

答案 0 :(得分:0)

在您删除课程之前,您正在返回,这就是原因!

您的$oDiv.removeClass('test');永远不会被视为:

        if(oDiv.hasClass('test')) {
        alert('class'+allChildDivHeight );
        return oDiv.animate({ opacity: 'toggle', marginTop:('-' + allChildDivHeight + 'px') }, speed, easing, callback);
        $oDiv.removeClass('test');        <------ This is never called
    }

因为你之前有回归。