1

動的に 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(oDiv.hasClass('test')) {}

クラスの削除が機能しない理由$oDiv.removeClass('test');

助けてください。ありがとう

4

1 に答える 1

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
    }

前の列にリターンがあるからです。

于 2012-10-08T11:13:22.677 に答える