为什么没有使用focusout方法在jQuery中触发focusout事件?

时间:2013-07-15 09:59:59

标签: jquery events handsontable

我正在使用handontable jQuery插件。当用户停止编辑单元格时,我试图拦截。双击单元格时,该单元格的位置会出现类handsontableInput的文本区域。

使用jQuery我试图在用户点击其他地方时收到回调,从而失去了textarea的焦点。

以下是简单的焦点代码:

$(".handsontableInput").focusout(function () {
    alert("LLL");
});

这是我的fiddle

另外,如果带有handontable的页面在一个框架中,并且我在框架外单击了吗?

谢谢

4 个答案:

答案 0 :(得分:6)

您应该使用.on方法:

$("#exampleGrid").on('focusout','.handsontableInput',function () {
    alert("LLL");
});

JSFIDDLE:http://jsfiddle.net/edi9999/HEH5C/1/

您的代码存在的问题是,在执行$(".handsontableInput")时,它们不是此类的元素,因此该事件未附加到任何元素。

答案 1 :(得分:3)

像这样委托事件:

$("#exampleGrid").on('focusout',".handsontableInput",function () {
    console.log("LLL");
});

答案 2 :(得分:2)

您需要使用事件委派,因为.handsontableInput正在动态生成

$(document.body).on('focusout',".handsontableInput",function () {
    console.log("LLL");
});

演示---> http://jsfiddle.net/HEH5C/2/

答案 3 :(得分:1)

已经有一个动手的事件可以做到这一点。 你可以使用它自己的事件:

afterChange (changes: Array, source: String)

虽然此事件的主要描述是“在更改一个或多个单元格后触发了回调”,但即使没有更改,也会调用它,只需使用{oldValuenewValue changes 1}}数组是一样的。因此,当编辑结束并失去焦点时会调用此事件,这就是您想要的。

有关双手活动的更多详情,请查看here