多个事件避免多次调用

时间:2013-01-31 08:50:50

标签: jquery

我有一个文本框,我正在使用live()的keyup事件 - 编写新代码的人应该使用on() - ,但问题是人们可以复制和粘贴值,拖动值in或使用自动填充来更改值。

要解决此问题,我发现可以使用以下内容:

$(".textbox").live("keyup change input", function(){

这样可行,但问题显然是在某些情况下和某些浏览器中多次调用该函数。我似乎无法想到避免这个问题的方法。有没有人有任何快速的想法?如果代码被多次调用,它不是世界末日,因为它只是更新页面上的某些值,但是学习如何解决这个问题会很好!谢谢!

编辑:我之前忘记提及它但是我使用的是jQuery 1.4.4并且on()不可用。

2 个答案:

答案 0 :(得分:0)

建议和更正

不推荐使用函数$.live()。因此,请更改以下代码:

$(".textbox").live("keyup change input", function(){

要:

$("body").unbind("keyup").unbind("change").unbind("input").on("keyup change input", ".textbox", function(){

这可以解决多个事件附件。

答案 1 :(得分:0)

如果发生多个事件但未更改该值,则我们可以忽略这些事件。因此,您可以保留旧值并与新值进行比较,以确定是否应该执行某些操作:

$(".textbox").live("keyup change input", function(e){
    if($(this).attr("old-value") !== $(this).val()){
        // do something

        // update old-value
        $(this).attr("old-value", $(this).val());
    }
});

在这里演示:http://jsfiddle.net/NYmYJ/3/