2017-06-05 13 views
0

各項目に閉じるボタンが付いた項目のリストがあります。クリックすると、アニメーションが再生され、スライドのリストが表示され、アイテムは正常に削除されます。アニメーションを完了した後に要素を切り離して移動する

$(document).on("click", ".close-button", function(e) { //removes with animation 
    $(this).parent().animate({ 
     opacity: 0 
    }, 250, function() { 
     $(this).animate({ 
       marginBottom: 0 
      }, 250) 
      .children() 
      .animate({ 
       padding: 0 
      }, 250) 
      .wrapInner("<div />") 
      .children() 
      .slideUp(250, function() { 
       $(this).closest(".element").remove(); 
      }); 
    }); 
}); 

上記のコードを修正して、アイテムを削除する代わりに、アイテムをデタッチして別のビューに移動するようにしました。私はこれを、以下のコードを使って無駄にしようとしました。 $(this).closest('.element').detach().prependTo('#diff-view').hide().slideDown(250)

アニメーションを削除すると、要素が別のビューに正常に移動します。

$(document).on("click", ".close-button" ,function(e) { //detaches w/o animation 
    $(this).closest('.element').detach().prependTo('#diff-view').hide().slideDown(250) 
}); 

私はもちろんのアニメーションを維持したいが、私はちょうど場所でそれらを保持したまま外す代わりに削除する方法を見つけ出すことはできません。どんな助けでも大歓迎です。

+0

削除作業はありますか? – Satpal

+0

@Satpalちょうどそれをチェックアウトするためにコメントしました。視覚的な違いはありませんが、ドキュメントをチェックしたところ、明らかに動作していません... htmlはまだ隠されています。私は認識していません – moomin

答えて

1

親をアニメーション化すると、thisはアニメーション要素を指します。閉じるボタンの結果参照が失われます。

ストア現在の要素と標的化する後の使用の要素の参照。

$(document).on("click", ".close-button", function (e) { 
    //Store the reference 
    var $this= $(this); 
    $(this).parent().animate({ 
     opacity: 0 
    }, 250, function() { 
     $(this).animate({ 
      marginBottom: 0 
     }, 250) 
     .children() 
     .animate({ 
      padding: 0 
     }, 250) 
     .wrapInner("<div />") 
     .children() 
     .slideUp(250, function() { 
      $this.closest('.element').prependTo('#diff-view').hide().slideDown(250) 
     }); 
    }); 
}); 
+0

今、参照を保存する必要があることを理解していますが、それはまだ他のビューに要素を移動していません。これは '.remove()'を使って削除します。これは素晴らしいことです。私はすべてのアニメーションなしでどのようにプリエンディングが動作するのか理解できませんが、ここにはありません。 – moomin

+0

'.prependTo()'の前に '.clone()'を使っています。私は '.detach()'の代わりに 'clone()'を使って参照を失っていますが、これが後で影響を与えるかどうかを見ていきます。 – moomin

関連する問題