0


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

任意の助けは大歓迎です!

1 Answer


0


問題は、イベントをバインドする方法にあるとは思わない。

イベントハンドラ内で、たとえば次のことを行います。

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

これにより、最初の画像の幅がわかります(http://api.jquery.com/attr/[attr]のドキュメントを参照)。

ユーザーが操作している画像をどのように判断しますか? フォーカスがある場合は、たとえば

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

…​but the point is, you need some way of letting the computer determine ユーザーが対話する予定の画像。