在表row(<tr>)中有几个输入元素.
我需要在tr失去焦点时执行一些JavaScript代码(但是当用户只是切换到同一tr中的不同输入元素时).
我使用jQuery.
怎么做跨浏览器?
rai*_*7ow 14
我想你正在寻找这种方法(演示,在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);
}
});
Run Code Online (Sandbox Code Playgroud)
如你所见,我们延迟调用我们的"真正的模糊处理程序"(console.log这个例子中的函数)setTimeout- 如果我们看到焦点停留在同一行,则清除此超时.
我在这里使用代表团,所以我不需要closest(tr)每次都打电话.但它在这里有另一个副作用,因为处理程序将正确处理添加到表中的输入.
| 归档时间: |
|
| 查看次数: |
7566 次 |
| 最近记录: |