作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我试图在更改选择元素时触发一个函数。
由于 Ipad 在使用 on('change') 时遇到问题,我还想绑定(bind)到 'blur',它在 Ipad 上运行良好。
但是我不希望这两个事件都触发该函数两次,所以我需要某种 Hook 来确保 change 和 blur 都触发,即底层函数只触发一次。
这就是我现在正在做的,但是......不是很好:
// 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/
我是一名优秀的程序员,十分优秀!