jQuery:如何知道表行何时失去焦点?

por*_*ton 4 jquery focus

在表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)每次都打电话.但它在这里有另一个副作用,因为处理程序将正确处理添加到表中的输入.