2

ドロップ可能なdiv要素があり、ドラッグ可能な要素をドラッグするとフェードアウトします。これは、outイベントを使用して正常に機能します。私が得ている問題は、ドロップ可能な要素に2つのドラッグ可能な要素がある場合です。ドロップ可能な要素は、ドラッグしてもフェードします。ドロップ可能な要素にドラッグ可能な要素がもう1つあるかどうかを確認して、フェード効果をキャンセルするにはどうすればよいですか。ドロップ可能な要素は、最後のドラッグ可能な要素が削除されたときにのみフェードするようにします。

$(".droppable-element").droppable({
    tolerance: 'touch',
    out:function(event,ui){

       /*Need to first check if there is another draggable element in the droppable before fading out.*/
            $(this).fadeOut('slow', function(){
                // Animation complete.

             });                
 }
});
4

1 に答える 1

2

ドラッグ可能な要素はドロップ可能な要素の子 (子孫) ですか? そして、彼らが引きずり出されるとき、彼らはそこから取り除かれますか?その場合、次のようなことができます。

if ( $(this).find(".draggable-element").length == 0 )
    $(this).fadeOut('slow', function(){

更新:私が正しく理解していれば、要素をドロップ可能にドラッグし(おそらくドロップしましたか?)、別の要素をドラッグして削除しました。その場合、どの (または少なくともいくつの) ドラッグ可能要素がドロップ可能要素を超えたが、消えなかったかを追跡できます。

$(".droppable-element").droppable({
    tolerance: 'touch',
    over:function(event,ui) {
        var howMany = $(this).data("howMany") || 0;
        $(this).data("howMany", howMany+1);
    },
    out:function(event,ui){
        var howMany = $(this).data("howMany") || 1;
        $(this).data("howMany", howMany-1);
        if ( howMany == 1 )
            $(this).fadeOut('slow', function(){
                // Animation complete.
            });
    }
});
于 2012-01-06T01:36:17.583 に答える