2010-10-12 3 views
0

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

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

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

ответ

0

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

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

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 
    // ... 
}); 

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

+0

Часть imgwidth должна найти только первое изображение. У меня есть это там, чтобы определить состояние, которое было переключено или нет, поэтому вы можете нажать пробел один раз, чтобы увеличить задние изображения в #gallery, а затем снова избавиться от класса, который их увеличивает. #gallery div заменяется свежими изображениями каждый раз, когда пользователь нажимает клавиши со стрелками. Я бросил пример в Интернете: http://werchris.com/emily. У меня есть другие ключевые события в keypress, так что установка live() на #gallery img решит проблему? –

+0

@Chris Anderson: у вас не должно быть нескольких элементов с одинаковым идентификатором (например, 'id =" image "') – sje397