我想要求用户确认删除表格行。如果他们说是的,那么我想在具有设定持续时间的表行上使用jquery fadeOut()方法,并在淡出完成后使用回调来删除表格行。使用.confirm()条件来调用jquery .fadeOut(),并用持续时间来调整回调时间
这工作正常没有确认,但确认增加奇怪和不一致的行为。如果我立刻点击“确定”,那么它按预期工作。但是如果我在等待几秒钟后点击“确定”,则淡出有时会被跳过,然后在删除该行之前需要几秒钟。这是不一致的,有时我需要先做其他事情(比如添加一行),然后得到错误行为(请参阅下面的演示链接)。另外,如果我在Facebook中将页面加载为iframe,每次都会遇到问题。
我认为这与异步与渐进式编码有关,并尝试改变我的代码以调用fadeOut作为自定义确认函数的回调函数,但这并没有解决任何问题。很可能我没有做好。除非有要求,否则我不会发布该代码以避免混淆。我也认为它可能与jQuery事件队列或执行上下文有关,但我不知道足够了解/调试它。
所以这里是我的代码片段,其中的问题是。需要注意的是,如果我拿出的确认工作正常,或者如果我拿出了淡出,只是使用remove:
// handler to remove question (uses "on" to bind event to future added rows)
$("#questions").on("click",".removeQuestion", function(){
if (confirm('Are you sure you want to remove this question?')) {
// be sure to leave one question to fill in
if ($("table#questions tr").length == 1) {
$(this).parents("td").find("textarea").val('');
$(this).parents("td").find("input[type=radio]").attr('checked', false);
}
else {
$(this).parents("tr").fadeOut(300, function() {
$(this).remove();
});
// update total questions text
$(".total_questions").text(function(index, text) {
return parseInt(text)-1;
});
}
}
});
下面是一个演示页面,您可以尝试复制错误的链接(你可能有一些高级玩 - 见上面关于不一致笔记 - 第几次尝试往往很好地工作),并查看整个源: https://xcitemediacustomfacebookpages.com/hebetsmccallin/admin_test.php
顺便说一句,我在Chrome Mac上测试它。
谢谢你的帮助!我一直在这个圈子里,这太令人沮丧了。
其他人?我注意到的另一个奇怪的事情是,有时当它“卡住”时,我需要做一些事情,例如在行将消失之前滚动页面。 – Jeff 2012-01-18 23:15:15