我遇到了一段脚本,它在删除了一个对象后,在获得该课程后隐藏了一段时间&#39; <39>
selector = getselector($(this).parent().parent());
console.log("Clicked Cancel");
$(this).parent().parent().addClass('hidden');
setTimeout(function() {
$(selector).remove();
}, 400);
我编辑了here的一些脚本以使函数 getselector ,因为$(this)不能在setTimeout中工作。 现在这段代码可以正常工作,只要你不再快速运行它。 问题似乎是变量 selector 在另一个节点在时间跨度内被删除时被搞砸了(目前为400ms)
我无法想到一个简单的方法。 :(
答案 0 :(得分:1)
答案很简单:不要使selector
全局,即使用var
。哦,只是存储元素而不是尝试构建选择器:
var elem = $(this).parent().parent();
elem.addClass('hidden');
setTimeout(function() {
elem.remove();
}, 400);
答案 1 :(得分:1)
您还可以通过以下方式对删除进行排队,这会使您的代码更加麻烦:
$(this).parent().parent().addClass('hidden').delay(400).queue(function() {
$(this).remove();
});
答案 2 :(得分:-1)
在流程开始时设置值为true的变量。在操作上,检查它是否为false,然后将其设置为false,然后在完成后返回true。如果你点击它太快,它将检查你的变量,再次看到它是真的并将再次执行操作。