3

on とセレクターを使用しているときに、blur メソッドが渡されたデータを受信しない理由がわかりません。

これがコードです。任意の入力を入力してタブを押すだけで、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たイベントには、2 つではなく 1 つの引数しかありません。isTabシステムがそのイベントを作成する通常の方法では、そのイベント ハンドラーに渡される引数はありません。jQuery docで確認できます。

手動でトリガーされたイベントのイベント名を通常のイベントではない名前に変更し、 で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 に答える