我過去做過的一種方法是將標記CSS類添加到打開的框中。如果您使用jQuery動畫製作,可以使用完整的回調將該類添加到剛剛打開的元素中,您可以輕鬆完成此操作。
一旦你有了這個,你的邏輯,在你的觸發動畫的點擊處理程序,執行以下操作: 1)檢查被點擊/ /正在打開的元素是否有打開的類,如果是這樣設置一些臨時標誌來表明這一點。
2)做一個jQuery搜索所有具有已打開類的元素,併爲它們的關閉設置動畫。
3)如果您的標誌告訴您單擊的元素尚未打開,則將其設置爲打開狀態,否則什麼也不做。
這裏有一個簡單的例子,我有多個div,點擊時它們會變得更大,半透明,但是一次只能有一個很大,點擊一個已經擴展的div會縮回正常。
$('div').on('click', pop);
function pop(event) {
debugger;
var alreadyPopped = false;
if ($(event.target).hasClass('popped')) {
alreadyPopped = true;
}
$('.popped').animate({
height: 50, width: 50, opacity: 1
}, 1000, "linear", function(e) {
$('.popped').removeClass('popped');
});
if (!alreadyPopped) {
$(event.target).animate({
height: 200, width: 200, opacity: 0.5
}, 1000, "linear", function(e) {
$(event.target).addClass('popped');
});
}
}
現場演示:http://jsfiddle.net/ijoukov/zA87j/1/
切換()會工作。在我的情況下,正在動畫的項目還沒有被添加到HTML - jquery作爲點擊事件的一部分。 – Moniarde 2013-02-14 08:12:26