Как вы используете jquery .live () с нажатиями клавиш? - PullRequest
0 голосов
/ 12 октября 2010

Я создаю портфолио фотографий для клиента и решил сделать его немного более интерактивным. Я избавился от всех кнопок на сайте и заставил пользователя взаимодействовать с сайтом, используя нажатия клавиш. Мой оригинальный код:

$(document).bind('keydown', function( e ) {

но это, к сожалению, не позволило бы пользователю взаимодействовать с изображениями, которые были загружены через jquery. поэтому посетитель мог взаимодействовать только с первой картинкой. Я огляделся и обнаружил, что метод .live () должен был связать событие со всеми объектами, независимо от того, загружен ли он при загрузке документа или после него. Но по какой-то причине это не работает с моим кодом. Я использую jquery 1.4.2, и это пример моего кода:

$(document).live('keydown', function( e ) { 

 if (e.keyCode == 32) { 

     var imgwidth = $('#gallery img').attr('width');

     if(imgwidth == 640) {

     $('#content div#image').removeClass('large');

     $('#content img').removeClass('large');

     }else{

     $('#content div#image').addClass('large');

     $('#content img').addClass('large');

     }
     return false;
     };
 });

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 12 октября 2010

Не думаю, что проблема в том, как вы связываете события.

Внутри вашего обработчика событий вы делаете, например:

var imgwidth = $('#gallery img').attr('width');

Это даст вам ширину первого изображения (см. attr документы).

Как вы определяете, с каким изображением взаимодействует пользователь? Если у него есть фокус, то вы можете сделать, например,

$('#gallery img').live("keydown", function(e) {
  // here, 'this' is the DOM image object, and $(this) is the jQuery object for it
  // ...
});

... но дело в том, что вам нужен какой-то способ, позволяющий компьютеру определять, с каким изображением пользователь намерен взаимодействовать.

...