jQuery直播确认

时间:2010-02-03 08:00:39

标签: javascript jquery live

我遇到了.live()confirm的问题。它会使每次点击的确认对话倍增。我知道.die(),但我无法让它发挥作用。

$("button.del").live("click", function(){

        if(!confirm("Are you sure?")) {
            //close
        }

    });

我已经在上面的代码之后尝试了$("button.del").die("click");,在这种情况下,confim甚至没有触发。

3 个答案:

答案 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)

谢谢大家的回复......结果发现这是我代码中的一个错误...抱歉......

我没有看到它......带有确认的代码部分在每次点击时重新加载......因此倍增......