首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery -删除前的延迟和淡出

问jQuery -删除前的延迟和淡出
EN

Stack Overflow用户
提问于 2013-07-22 15:45:58
回答 4查看 5.3K关注 0票数 3

我正在尝试做一个.delay()和.fadeOut(),然后是.remove()

但delay和fadeout在remove中不起作用

下面是我的代码:

代码语言:javascript
复制
jQuery("#container").delegate(".remove", "click", function (e) {
    e.preventDefault();
    var parent = jQuery(this).data('parent');
    jQuery(this).closest('.' + parent).fadeOut(1000).delay(1000).remove();
})
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-22 15:51:18

好呀

代码语言:javascript
复制
jQuery(this).closest('.' + parent).fadeOut(1000, function(){
    $(this).remove()
});

在这种情况下,您应该使用.fadeOut()提供的完整回调

代码语言:javascript
复制
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();
})
票数 9
EN

Stack Overflow用户

发布于 2013-07-22 15:47:51

.remove()不在查询中,也不是一个转换,所以.delay()将无法工作。请改用setTimeout。

代码语言:javascript
复制
jQuery(this).closest('.' + parent).fadeOut(1000, function(){
   setTimeout($(this).remove(), 1000)
});

附注:在较新版本的jQuery中使用.on()而不是.delegate()

票数 2
EN

Stack Overflow用户

发布于 2013-07-22 15:51:01

你可以像下面这样做

代码语言:javascript
复制
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();
    });
})

请阅读下面的链接以了解执行此操作的其他方法。

Why can't I delay a remove call with jQuery

建议

尝试使用.on()而不是.delegate()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17782360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档