在表格行(<tr>
)中有几个输入元素。
当tr失去焦点时,我需要执行一些JavaScript代码(但是当用户只是切换到同一个tr中的不同输入元素时,我不需要)。
我使用jQuery。
如何跨浏览器进行操作?
答案 0 :(得分:14)
我想你正在寻找这种方法(demo,在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)
。但是这里有另一个副作用,因为处理程序将正确处理添加到表中的输入。