我遇到了.live()
和confirm
的问题。它会使每次点击的确认对话倍增。我知道.die()
,但我无法让它发挥作用。
$("button.del").live("click", function(){
if(!confirm("Are you sure?")) {
//close
}
});
我已经在上面的代码之后尝试了$("button.del").die("click");
,在这种情况下,confim甚至没有触发。
答案 0 :(得分:1)
如果您只是单独运行该代码,对话框是否会多次出现?
如果对话框多次出现,可能的解释是您不小心多次运行此.live()
绑定。如果发生这种情况,每次将事件绑定到按钮时都会看到一个对话框。
确保您只将此功能附加到按钮一次。
如果你看看这个standalone example,你可以看到你的代码没问题。
答案 1 :(得分:1)
你也可以发布HTML吗?
我可以推测的一个原因是.del类被指定到某个子类中,并且该事件在父和子上都被触发。这将发生在以下情况:
<div class="testclass">
test
<div class="testclass">
test2
</div>
</div>
...
$(".testclass").click(function() { alert("test"); });
另一个原因是如果你不小心将它绑定两次,即以下会导致同样的问题
$(".testclass").click(function() { alert("test"); });
$(".testclass").click(function() { alert("test"); });
我们确实需要查看更多代码。出于某种原因,您必须使用live
。使用简单的click()
绑定得到相同的结果吗?
答案 2 :(得分:1)
谢谢大家的回复......结果发现这是我代码中的一个错误...抱歉......
我没有看到它......带有确认的代码部分在每次点击时重新加载......因此倍增......