2012-04-05 37 views
0

我有一個動畫設置爲向下滑動DIV鏈接時單擊。當動畫結束時,我希望將下行鏈接替換爲UP鏈接,以便可以返回DIV。將DIV設置回到起始位置的JQuery動畫。我遇到的唯一困難是在Down和Up DIV之間切換。郵政動畫鏈接開關

下面的代碼http://jsfiddle.net/pC6fC/20/

回答

2

您可以指定要運行的回調,一旦動畫完成,像這樣:

var toggleButton = function() { 
    $(".link, .link1").toggle(); 
}; 

/* Slides down alert banner */ 
$(function(){ 
    $(".link").click(function(){ 
     $(".box1").animate({'margin-top':150}, 500, toggleButton); 
    }); 
}); 

/* Slides up alert banner */ 
$(function(){ 
    $(".link1").click(function(){ 
     $(".box1").animate({'margin-top':0}, 500, toggleButton); 
    }); 
}); 

我也改變visibility: hiddendisplay: none你的CSS。

查看Fiddle

+0

這隻在HTML內設置了兩個DIVS和一個簡單的切換方面效果很好。喜歡它。謝謝。 – Andy 2012-04-05 15:06:17

0

也許你可以嘗試使用函數toggle()來做到這一點。

它用於隱藏或顯示div。

<script type="text/javascript"> 
    function togglefield(classname) { 
     $("." + classname).toggle("slow") 
</script> 



<button onclick="togglefield('test')"> test </button> 

<div class="info"><br/><br/><br/></div> 

這當然可以改善,但這就是我對你的需求的想法。

1

這裏是提琴:http://jsfiddle.net/ttu9t/

<div class="link">DOWN</div> 
<div class="box1"></div> 
<div class="box2"></div>​ 

JS:

$(function(){ 
    $(document).on('click', '.link', function(){ 
     $('.box1').animate({'margin-top':150}, 500); 
     $(this).text('UP'); 
     $(this).removeClass('link'); 
     $(this).addClass('link1'); 
    }); 
    $(document).on('click', '.link1', function(){ 
     $('.box1').animate({'margin-top':0}, 500); 
     $(this).text('DOWN'); 
     $(this).removeClass('link1'); 
     $(this).addClass('link'); 
    }); 
}); 

,不要忘記將鏈接1可見:

.link1 { 
} 

UPDATE

http://jsfiddle.net/ttu9t/2/

+0

太棒了,謝謝。 – Andy 2012-04-05 14:18:43

+0

我認爲這可以通過使用回調來改善。由於動畫是異步發生的,因此在動畫完成之前按鈕會發生變化。 jQuery的['animate'](http://api.jquery.com/animate/)採用回調函數作爲動畫完成後運行的最後一個參數。 – alextercete 2012-04-05 16:37:38

+0

是的,絕對。我不知道你的具體要求,所以上面的代碼只是一個建議。有很少其他方法可以滿足您的要求。這取決於你自己決定。看到我更新的小提琴 – Elen 2012-04-05 16:54:22