jQuery focusin事件:为什么event.data为空?

时间:2013-02-10 14:47:28

标签: javascript jquery events focus

我的活页夹:

$("#wrapper").on("focusin", ".someInputField", function(e, a) {
    /* do something */
});

我的触发器:

$('.someInputField').trigger("focus", ["extra", "data"]);

如何获取“额外”和“数据”值? e.dataa始终未定义。 (Firefox 18)

然而相关问题:是否有可能区分 a)inputField通过Tab键或单击获得焦点 b)inputField通过一些.trigger()方法获得焦点?

2 个答案:

答案 0 :(得分:0)

您触发活动的顺序非常重要:

$('input').on('focusin', function(event, extra, data) {
    console.log(extra, data);
});
$('input').trigger('focusin', ['extra', 'data']);

<强> fiddle

答案 1 :(得分:0)

以下是trigger额外参数用法的示例:http://jsfiddle.net/UQTY2/10/

关于第二个问题,如果在使用trigger函数时添加额外参数,则可以测试它是否是本机事件。在以下示例中,如果param1param2不是null,则已从trigger函数调用该事件:

$("#wrapper").on("focus", ".someInputField", function(e, param1, param2) {
    /* do something */
    param1 = param1 || null;
    param2 = param2 || null;

    //param 1 and param2 are not null if the event has been called from trigger function
    console.log(param1);
    console.log(param2);   
});

$('.someInputField').trigger("focus", ["data","test"]);