2011-09-12 12 views
1

対住んで両方のバインディングは文書のみ結合作品のKeyDown、Firefoxでは jQueryのKeyDownイベントバインディング - ボディライブおよびドキュメントのKeyDown、クロム、サファリ、オペラでMacのKeyDownイベント

$(document).ready(function() { 
    $("body").append("Focus on this window and press any key"); 

    $("body").live("keydown", function(event) { 
     $("body").append("<p>live on body</p>");    
    }); 

    $(document).keydown(function() { 
     $("body").append("<p>keydown on document</p>");     
    }); 
}); 

を働きます。

なぜMacのFirefoxでボディライブイベントバインディングが機能しないのですか?

マック10.7.1 クローム13.0.782.220 のSafari 5.1 オペラ11.51 Firefoxの6.02

例のテスト:私は100%確実ではない、しかし体にライブ結合していhttp://jsfiddle.net/MikeGrace/qZVg8/3/

+0

「ライブ」は正式に非難されています - あなたはまだ回答に興味がありますか? (私は_have_一つを言っていない) –

答えて

1

無意味なようです。ライブイベントはボディにバインドされ、一致したタグ(この場合はbody)がトリガされたイベント(キーダウン)を取得するかどうかを確認するためです。

ボディ内の要素のバインドを委任するライブ関数が作成されました。

firefoxでは、keydownイベントは本体でトリガされず、ドキュメント上でトリガされます。

$(document).bind("keydown", function(event) { 
    $("body").append("<p>keydown on document</p>");    
}); 
+0

情報ありがとうございますが、それは私の質問に答えることはありません。 –

+0

'live'関数は正式に非推奨になりました –

+0

@MikeGraceそれがします。最初のイベントはトリガされません。なぜなら、 'document'を起動している間に' body'にバインドしているからです。 2番目のものを 'document'にバインドするので、両方のブラウザで動作します。 –