javascript - 如何取消延迟的 DOM 元素删除

标签 javascript jquery settimeout

我试图在延迟后删除 DOM 元素。我还希望通过用户单击取消此删除(如果他们在计时器到期之前单击。这就是我所拥有的:

<div class="delete">Delete me!</div>

显然,我只是展示了相关的来源。

$("div.delete").click(function() {
    var element = $(this),
        timeout = element.attr('data-timeout');
    if (timeout) {
        clearTimeout(timeout);
        element.removeAttr('data-timeout');
        element.text("Delete me!");
    } else {
        timeout = setTimeout(function() {
            element.remove();
            alert('Sniff, too late!');
        }, 2000);
        element.attr('data-timeout', timeout);
        element.text("Save me!");
    }
});

这行得通!我的问题

  1. 有更好的方法吗?我的第一次失败尝试有多个处理程序。
  2. 为什么它在 Javascript 1.7 中不起作用?

http://jsfiddle.net/zhon/H8a9J/

最佳答案

它不适用于 JavaScript 1.7,因为您使用的浏览器不支持它和/或它的嵌入方式。您的 fiddle 在 Firefox 上运行良好。

http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28ECMAScript%29

关于javascript - 如何取消延迟的 DOM 元素删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12715968/

相关文章:

javascript - 如何为 Promise 解析添加延迟?为 Node http.request Promise 添加延迟

javascript setTimeout调用错误

javascript - classList.toggle 仅部分有效

javascript - 光标 :auto behaviour in IE 8 and 9

javascript - 允许用户在谷歌地图自定义 map 中向后移动标记位置(z-index?)

php - 在 php 脚本完成之前通过 jquery load() 函数从 php 脚本获取结果

javascript - 在 setTimeout 中调用相同的函数

javascript - html mailto 链接中的光标位置

javascript - Ajax 响应在第一次调用后始终返回 2

javascript - jquery通过ajax和animate加载内容