3

我不知道为什么模糊方法在使用 on 和选择器时没有接收到传递的数据。

这是代码,只关注任何输入,然后按 Tab,您将看到 isTab 参数未设置。为什么?

小提琴:http: //jsfiddle.net/fz5yA/9/

html:

<div id="Container">
</div>

JavaScript:

var Container = $("#Container");
Container.on({
    keydown : function(e){
        var Item = $(this);

        console.log(e.keyCode);
        if(e.keyCode == 9) {
            Item.trigger("blur",[true]);
            return false;
        }
    },
    blur : function(e, isTab)
    {
        console.log("IsTab:" + isTab);
    }},".Item");

for(var i = 0 ; i < 10 ; i++)
{
    Container.append("<input class='Item'/>");
    Container.append("<br/>");
}
4

1 回答 1

1

系统生成的blur事件只有一个参数,而不是两个。没有isTab以系统创建该事件的正常方式传递给该事件处理程序的参数。您可以在jQuery 文档中看到这一点。

如果您将手动触发的事件的事件名称更改为非正常blur事件的名称,并且您修复了传递参数的方式.trigger(),那么额外的参数将起作用。改成这个,你会看到额外的参数:

Container.on({
    keydown : function(e){
        var Item = $(this);

        console.log(e.keyCode);
        if(e.keyCode == 9) {
            console.log("aaa");
            Item.trigger("myEvent", true);   // Changed event name and fixed the syntax in this line
            return false;
        }
    },
    myEvent : function(e, isTab)             // Changed event name here
    {
        console.log("IsTab:" + isTab);
    }},".Item");

在这里演示:http: //jsfiddle.net/jfriend00/fz5yA/17/

于 2013-06-05T18:33:53.887 回答