当前位置: 首页 > 知识库问答 >
问题:

在自毁div setTimeout(函数(){...},3000)上刷新定时器;

公良鸿风
2023-03-14

因此,我这里有一把小提琴,它在右下角添加了一个div,以在用户添加项目时通知用户(单击item1item5divs上的事件)。此div在几秒钟后自毁(div.remove())。

$(document.body).append(element); //the div created

setTimeout(function(){
      $('#test').remove(); //the div to be removed
}, 3000);

第一个问题是,在不到3秒内添加几个div会导致很多div无法看到下面的div。所以我在上添加了这一行。单击()事件,然后再执行其他操作。

$(“#测试”)。删除();

新的/当前的问题是,在不到3秒钟的时间内添加几个div可能会导致div仅出现一秒钟或更短的时间,无法看到它是什么。有没有办法解决这个问题??

共有2个答案

郏正信
2023-03-14

尝试以下操作:将时间间隔存储在一个变量中,并在每次单击项时将其清除,这样以前为设置的时间间隔#test将被清除,并使用setTimeout设置新的时间间隔

var timer;//variable to store timeout
$('.item').click(function() {
    $('#test').remove();
    window.clearTimeout(timer);//clear timeout
    var element = "<div id='test' class='arrow_box'>You just added an "+$(this).text()+"!</div> ";

    $(document.body).append(element);
    //store timeout
    timer = setTimeout(function(){
      $('#test').remove();
    }, 3000);
});

演示

司空祯
2023-03-14

您应该在启动新的超时之前清除超时,但除此之外,我建议将弹出窗口的所需行为封装到其他位置,这样它就不会绑定到click函数:

function Popup() {
    var timer = null;
    var $el = $('<div>', {
        id: 'test',
        class: 'arrow_box'
    }).appendTo(document.body).hide();

    this.show = function (text) {
        $el.text(text).stop(true, true).show();
        clearTimeout(timer);
        timer = setTimeout(function () {
            $el.hide('slow');
        }, 3000);
    }
}

var popup = new Popup();
$('.item ').on('click', function () {
    popup.show('You just added an '+ $(this).text() + '!');
});

请注意,将元素保留在DOM中(但隐藏)可以使动画更灵活-例如,您可以使弹出窗口淡出,而不是简单地闪烁消失。

演示http://jsfiddle.net/alnitak/4et4cctr/

 类似资料:
  • 新的/当前的问题是,在不到3秒的时间内添加几个div可能会导致div只出现一秒或更短的时间,无法看到它是什么。有办法解决吗??

  • 我写了一个自定义的谷歌应用脚本,它将接收一个并从网络服务中获取信息(价格)。 我在电子表格中使用这个脚本,它工作得很好。我的问题是,这些价格会发生变化,而我的电子表格不会得到更新。 如何强制它重新运行脚本并更新单元格(而不手动检查每个单元格)?

  • 本文向大家介绍Android自定义下拉刷新上拉加载,包括了Android自定义下拉刷新上拉加载的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android自定义下拉刷新上拉加载的具体实现步骤,供大家参考,具体内容如下 实现的方式是SwipeRefreshLayout + RecyclerView 的VIewType 首先看效果: 总的思路: 布局文件 下拉刷新的实现思路 用于测试的

  • 问题内容: 我有一个表和两个具有相同表的数据库,但是一个是另一个的符号链接,并且只允许对该表进行读取。 我已经使用Hibernate将表映射到Java,并使用spring根据某些输入条件将实体管理器的数据源设置为两个数据库之一。 当我连接到第二个数据库时,我仅调用只读操作(选择),但是Hibernate似乎试图将某些内容刷新回数据库,并且它无法告诉该视图不允许更新。 如何仅对第二个数据源禁用此更新

  • 问题内容: 我将添加拉动以刷新我的Web视图,以便刷新我的Web视图。我已经看到了此页面上的所有问题,但我找不到添加拉动刷新的好方法… Mainactivity.java content_main.xml 我希望任何人都能帮助我并为我解决这个问题。 问题答案: 您可以像这样在Swipe Refesh布局中包装webview 在java中

  • 问题内容: 有什么方法可以将少量数据加载到angular js的某些缓存中,页面的onrefresh从缓存中加载这些数据并再次显示? 现在的问题是,每当我刷新页面时,由于所有JS都会在刷新页面时重新加载,因此将重新启动sharedServices应用共享的详细信息。 我有一个登录页面和一个主页。登录成功后,我使用$ route路由到主页,并将loginID广播到Homepage控制器。现在,当我刷