jquery - 如何在单击几秒钟后自动隐藏的 div 时隐藏它?

标签 jquery

我有一个div。该 div 会在 5 秒延迟后自动隐藏。但我希望用户自己可以通过在指定的 5 秒时间段过去之前单击它来隐藏它 - 就像我们在 phpmyadmin 中看到的,当发生某些操作时。我通过 fadeOut() 方法隐藏它。当 div 本身在 5 秒后隐藏时,此方法工作正常,但当单击事件发生时,fadeOut() 不起作用。如果我使用 hide() 那么它就可以工作。那么为什么我不能在点击事件上使用 fadeOut() 呢?这是我的代码 -

<script type="text/javascript">
$(document).ready(function(){
    $(".msg_wrapper").delay(5000).fadeOut(500);

    $(".msg_wrapper").click(function(){
        $(this).fadeOut(500); // does not work, but hide() works, why?
    });
});
</script>

最佳答案

编辑:使用 jQuery clearQueue [>= jQuery v1.4] 取消延迟的方法:

$(function() {
    $('.msg_wrapper').delay(5000).fadeOut(500).on('click', function () {
        $(this).clearQueue().fadeOut(500);
    });
});

JSFiddle:http://jsfiddle.net/KY7TZ/1/

或者,如果您更喜欢使用纯 Javascript 的 setTimeout 方法:

$(function() {
    var $msg = $('.msg_wrapper'),
        timeout = setTimeout(function () {
            $msg.fadeOut(500);
        }, 5000);

    $msg.click(function() {
        clearTimeout(timeout);
        $msg.fadeOut(500);
    });
});

JSFiddle:http://jsfiddle.net/KY7TZ/

关于jquery - 如何在单击几秒钟后自动隐藏的 div 时隐藏它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23029469/

相关文章:

jquery - 在我的情况下如何滚动 div?

Javascript使用索引和数据将数据插入单元格

javascript - Express/JavaScript 中的作用域和传递 - 如何传递数据库变量?

javascript - 当我通过 ajax 使用跨域调用通用处理程序时,在 ajax 成功时数据未定义

javascript - 反转 onClick 事件 onClick

javascript - ajax请求中修改的变量在执行后不可见

javascript - 滚动时使 Div "catch"位于页面顶部

Jquery:设置获取cookie,作为类应用

php - HTML 特殊字符和 PHP

jquery - MySQL 从特定值中选择