2012-01-18 10 views
1

代わりに.onを使ってみましたが、委任しました。 (コードは生きていないときに動作する) 誰も私に手を差し伸べることはできますか?私は "qspholder"のクラスで(ajaxリクエストを介して)リストをループしています。このコードでは、矢印キーを使用してリストの項目を選択してクリックする必要があります。しかし何らかの理由で私はライブとしてそれをやろうとすると、この機能を果たさないように見えます。値を送信して取得した後に、そのリスト(リスト)を.html(data)でdivに配置します。このコードは、ロードされているページにはなく、読み込んでいるページにあります。どのように私はこの仕事を得るために誰も私にいくつかのアドバイスを与えることができますか?ありがとうございました。keydownが動作しているときに.liveを取得できません...提案はありますか?

$(window).live("keydown", function(e){ 
     var liSelected; 
     var li = $('.qspholder'); 
     $('.qspholder').removeClass('selected'); 
     if(e.which === 40){ 
      if(liSelected){ 
       liSelected.removeClass('selected'); 
       next = liSelected.next(); 
       if(next.length > 0){ 
        liSelected = next.addClass('selected'); 
       }else{ 
        liSelected = li.eq(0).addClass('selected'); 
       } 
      }else{ 
       liSelected = li.eq(0).addClass('selected'); 
      } 
     }else if(e.which === 38){ 
      $('.qspholder').removeClass('selected'); 
      if(liSelected){ 
       liSelected.removeClass('selected'); 
       next = liSelected.prev(); 
       if(next.length > 0){ 
        liSelected = next.addClass('selected'); 
       }else{ 
        liSelected = li.last().addClass('selected'); 
       } 
      }else{ 
       liSelected = li.last().addClass('selected'); 
      } 
     } else if(e.which === 13) { 
      liSelected.click(); 
     } 
    }); 
+0

に適用します使っていますか? – Nix

+0

好奇心から、 'live()'の中でキーボード機能を維持する利点は何ですか?私は通常それをやっていないし、(ページ上のAJAX要素でも)うまく動作します。 – Nix

+0

例えば 'onclick'を持つ要素を削除/移動すると、イベントは削除され、起動しません。 '.live'では、要素が移動されても置き換えられたとしても、偶数は生き続ける。 – Dementic

答えて

2

この作品、あなたのコードのjQueryのバージョン

$(document).on("keydown", function(e){alert(e.keyCode);}); 

http://jsfiddle.net/KBPb4/10/

あなたの元のコードに適用

(もSWITCHIFを変更)

$(document).on("keydown", function (e) { 
    var liSelected; 
    var li = $('.qspholder'); 
    $('.qspholder').removeClass('selected'); 

    switch (e.keyCode) { 
    case 40: 
     if (liSelected) { 
      liSelected.removeClass('selected'); 
      next = liSelected.next(); 
      if (next.length > 0) { 
       liSelected = next.addClass('selected'); 
      } else { 
       liSelected = li.eq(0).addClass('selected'); 
      } 
     } else { 
      liSelected = li.eq(0).addClass('selected'); 
     } 
     break; 
    case 38: 
     $('.qspholder').removeClass('selected'); 
     if (liSelected) { 
      liSelected.removeClass('selected'); 
      next = liSelected.prev(); 
      if (next.length > 0) { 
       liSelected = next.addClass('selected'); 
      } else { 
       liSelected = li.last().addClass('selected'); 
      } 
     } else { 
      liSelected = li.last().addClass('selected'); 
     } 
     break; 
    case 13: 
     liSelected.click(); 
     break; 
    } 
}); 
関連する問題