在表行中 (<tr>
)有几个输入元素。
当 tr 失去焦点时(但不是当用户只是切换到同一 tr 中的不同输入元素时),我需要执行一些 JavaScript 代码。
我使用 jQuery。
如何做到跨浏览器?
我想您正在寻找这种方法(demo http://jsfiddle.net/dU8sn/,在 Chr/Ff/IE10 中检查):
var delayedFn, blurredFrom;
$('tr').on('blur', 'input', function(event) {
blurredFrom = event.delegateTarget;
delayedFn = setTimeout(function() {
console.log('Blurred');
}, 0);
});
$('tr').on('focus', 'input', function(event) {
if (blurredFrom === event.delegateTarget) {
clearTimeout(delayedFn);
}
});
正如你所看到的,我们延迟了对“真正的模糊处理程序”的调用(这是带有console.log
在此示例中)与setTimeout
- 如果我们看到焦点停留在同一行,则清除此超时。
我在这里使用委托,所以我不需要打电话closest(tr)
每一次。但它在这里还有另一个副作用,因为处理程序将正确处理动态添加到表中的输入。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)