2010-10-10 100 views
1

我有一個動畫方法的問題。jQuery遏制動畫

<div id="containment"> 
    <div id="child1">C1</div> 
    <div id="child2">C2</div> 
    <div id="child3">C3</div> 
</div 

C1到C3可以拖動的元素,而我還沒有應用任何約束就可以了,因爲當我出#containment的,我會自動調整其大小。

$("#containment > div").bind("dragstop", function(event, ui) { 
    var size = $.extend({}, $("#containment").data("originalSize")); 
    $.each($("#containment > div"), function(index, d) { 
     width = parseInt($(d).css("left"), 10) + parseInt($(d).outerWidth(), 10); 
     height = parseInt($(d).css("top"), 10) + parseInt($(d).outerHeight(), 10); 
     size.width = (width > size.width) ? (width + 50) : size.width; 
     size.height = (height > size.height) ? (height + 50) : size.height; 
    }); 

    $("#containment").animate({ 
     width: size.width, 
     height: size.height 
    }, 'slow'); 
}); 

問題是,當dragstop被激發,我搬出孩子是隱藏的,只有當#containment動畫結束時出現。

在我的屏幕B1和B2具有相同的大小,因爲動畫運行只是B1是不完全可見......

alt text

感謝

+0

你在使用[** draggable **](http://jqueryui.com/demos/draggable/)嗎? - 你想要什麼樣的行爲? – 2010-10-10 16:10:00

+0

總是看到子div(在屏幕上顯示爲橙色),而不是等待父母足夠大才能看到它。 – 2010-10-10 18:24:51

回答

1

只是一個猜測,但如果你在div#containment中有'overflow:hidden',當你拖動節點時,它的任何部分都會被父div遮擋。 (儘管它不在父容器的界限之內,但是它仍然是一個孩子)。或者,您可以將子節點移動到您的dragstop偵聽器中的父div的外部。

+0

我的遏制不在「溢出:隱藏」模式,所以最好的解決方案是在動畫執行時將孩子放出。這樣做有點煩人,但我認爲我有另一種解決方案...... – 2010-10-12 17:19:25