javascript - 如何绑定(bind)到模糊和更改,但只在 Jquery/Javascript 中触发一次函数?

标签 javascript jquery events jquery-mobile

我试图在更改选择元素时触发一个函数。

由于 Ipad 在使用 on('change') 时遇到问题,我还想绑定(bind)到 'blur',它在 Ipad 上运行良好。

但是我不希望这两个事件都触发该函数两次,所以我需要某种 Hook 来确保 changeblur 都触发,即底层函数只触发一次。

这就是我现在正在做的,但是......不是很好:

// make sure binding is only assigned once
var compSel = $('#my_select');
if ( compSel.jqmData('bound') != true ){
    console.log("bound");
    compSel.jqmData('bound', true)
        .on( $.support.touch ? 'blur' : 'change', function(){
            console.log("trigger");
            // run function xyz
        })
    }               

如果您可以使用所有可触摸设备来处理 blur,那么此方法可行。

问题:
有没有人有更好的主意来确保模糊和更改只触发一次功能?

感谢您的帮助!

最佳答案

尝试创建一个函数,绑定(bind)到两个事件,并添加一个超时来调用该函数。这样,如果函数被多次调用,它只会运行一次。

像这样(如果需要你可以调整超时):

function blurChange(e){
    clearTimeout(blurChange.timeout);
    blurChange.timeout = setTimeout(function(){
        // Your event code goes here.
    }, 100);
}

$('#my_select').on('blur change',blurChange);

关于javascript - 如何绑定(bind)到模糊和更改,但只在 Jquery/Javascript 中触发一次函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11346359/

相关文章:

javascript - 使用javascript获取元素的子元素

javascript - 为什么我的函数没有按预期显示和隐藏元素?

javascript - 当我的动画完成时,transitionend 事件不会触发

javascript - 如何在复选框单击时停止事件冒泡

javascript - knockout中订阅的函数如何取消订阅?

javascript - 如何使用组件将值传递给 Controller ​​?

javascript - 寻找更好的 JavaScript/CSS 开关

jquery - 迁移到 jquery 1.4

jquery - 隐藏标题并在悬停时出现

javascript ajax 有时无法执行