Привязка события jQuery keydown - live против keydown - PullRequest
2 голосов
/ 12 сентября 2011

На Mac в Chrome, Safari и Opera работают привязки основного текста и клавиш документа

$(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>");                 
    });
});

В Firefox работает только привязка клавиш документов.

Почемуне работает ли привязка событий body live в Firefox на Mac?

Mac 10.7.1 Chrome 13.0.782.220 Safari 5.1 Opera 11.51 Firefox 6.02

Пример теста: http://jsfiddle.net/MikeGrace/qZVg8/3/

1 Ответ

1 голос
/ 12 сентября 2011

Я не уверен на 100%, однако связывание жить на теле кажется бессмысленным. Поскольку прямое событие связывается с телом, а затем проверяет, получает ли соответствующий тег (в данном случае тело) событие (keydown), вызванное.

Функция live была создана для делегирования привязок для элементов в теле.

В Firefox событие keydown не запускается по телу, оно запускается по документу.

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