2012-10-08 29 views
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');

請幫助。謝謝

回答

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 
    } 

因爲你必須在該行返回之前。