3

私はやろうとし.delay().fadeOut()いる.remove()

しかしdelay、およびfadeoutには効果がありませんremove

これが私のコードです:

jQuery("#container").delegate(".remove", "click", function (e) {
    e.preventDefault();
    var parent = jQuery(this).data('parent');
    jQuery(this).closest('.' + parent).fadeOut(1000).delay(1000).remove();
})
4

4 に答える 4

9

なぜだめですか

jQuery(this).closest('.' + parent).fadeOut(1000, function(){
    $(this).remove()
});

この場合、 .fadeOut()によって提供される完全なコールバックを利用する必要があります。

jQuery("#container").on("click", ".remove", function (e) {
    e.preventDefault();
    var $this = jQuery(this), parent = $this.data('parent');
    $this.closest('.' + parent).fadeOut(1000).delay(1000).remove();
})
于 2013-07-22T07:51:17.987 に答える
2

以下のようなことができます

jQuery("#container").delegate(".remove", "click", function (e) {
    e.preventDefault();
    var parent = jQuery(this).data('parent');
    //jQuery(this).closest('.' + parent).fadeOut(1000).delay(1000).remove();

    jQuery(this).closest('.' + parent).delay(1000).fadeOut(1000, function(){
      $(this).remove();
    });
})

これを行う他の方法については、以下のリンクを参照してください。

jQuery で削除呼び出しを遅らせることができないのはなぜですか

アドバイス

.on()使う代わりに使ってみてください.delegate()

于 2013-07-22T07:51:00.763 に答える
2

.remove()クエリではなく、トランジションでもないため、機能し.delay()ません。setTimeout代わりに使用してください。

jQuery(this).closest('.' + parent).fadeOut(1000, function(){
   setTimeout($(this).remove(), 1000)
});

補足として、新しいバージョンの jQuery の.on()代わりに使用します.delegate()

于 2013-07-22T07:47:50.880 に答える