你如何使用jquery .live()进行击键?

时间:2010-10-12 10:39:06

标签: bind keypress keydown jquery

我正在为客户建立一个摄影作品集,并决定让它更具互动性。我摆脱了网站上的所有按钮,并让用户使用击键与网站进行交互。我使用的原始代码:

$(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 :(得分: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
  // ...
});

...但重点是,您需要某种方式让计算机确定用户打算与哪个图像进行交互。