Je construis un portfolio de photographie pour un client et j'ai décidé de le rendre un peu plus interactif. Je me suis débarrassé de tous les boutons sur le site et j'ai eu l'utilisateur d'interagir avec le site en utilisant des coups de touches. Mon code d'origine utilisé:Comment utilisez-vous jquery .live() avec des frappes?
$(document).bind('keydown', function(e) {
mais cela malheureusement pas permettre à l'utilisateur d'interagir avec les images qui ont été chargés par jquery. Le visiteur ne pouvait donc interagir qu'avec la première image. J'ai regardé autour de moi et j'ai découvert que la méthode .live() était censée lier un événement à tous les objets, qu'ils soient chargés lors du chargement du document ou après le fait. Mais pour une raison quelconque, cela ne fonctionne pas avec mon code. J'utilise jquery 1.4.2 et ceci est un échantillon de mon code:
$(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;
};
});
Toute aide serait grandement appréciée!
La partie imgwidth n'a besoin que de trouver la première image. Je l'ai là pour déterminer si l'état a été basculé ou non, donc vous pouvez appuyer sur espace une fois pour agrandir les images dans #gallery, puis de nouveau pour se débarrasser de la classe qui les agrandit. Le div #gallery est remplacé par de nouvelles images chaque fois que l'utilisateur appuie sur les touches fléchées. J'ai jeté un exemple en ligne: http://werchris.com/emily. J'ai d'autres événements clés dans le keypress, donc le réglage de live() à #gallery img résoudrait le problème? –
@Chris Anderson: vous ne devriez pas avoir plusieurs éléments avec le même ID (par exemple 'id =" image "') – sje397