2013-03-15 69 views
2

我想用向上/向下箭頭鍵選擇在搜索結果中的項目,焦點的下一個鏈接與jQuery

下一個環節都不會然而專注,我究竟做錯了什麼?

住在http://jsfiddle.net/JJDfL/1/

$('#hitbox').on('keyup','a', function(event) { 
    //focus prev/next with arrows, enter and escape 
    if (event.keyCode == 27) { 
     $('#hitbox').slideUp(100); 
     $('#searchbox').val(''); 
     $('#searchbox').focus(); 
    } 
    if(event.keyCode == 40) { 
     var focused = $(':focus');  
     focused.parent().next().focus(); 
     alert(focused.parent().next().html()); //returns '<a href="asdf">bb</a>' 
    } 
    }); 

UPDATE:

作品現在:

focused.parent().next().find('a').focus(); 

解決的問題。

http://jsfiddle.net/JJDfL/4/

回答

1

編輯:

有一對夫婦的問題,但香港專業教育學院編輯您的小提琴,它應該爲你工作:http://jsfiddle.net/JJDfL/6/

問題1: 你沒有選擇正確的元素當你按下時(一旦你選擇了第一個鏈接)。修正了通過:

$(this).parent().next().find("a").focus(); 

通知的.find( 「A」)選擇<p>元素中的一個<元素>,你可以使用兒童( 「一」)方法以及。

問題2: 你是不是停止事件的傳播,這使得事件觸發上藏漢近期重點項目,解決這個問題的:

event.stopPropagation(); 

此外,您的查詢變量似乎是不必要的如果你在功能完成時返回。

+0

謝謝,但在Chrome和ff 40觸發器(警報顯示)。嘗試在小提琴的搜索框中輸入「asdf」,#hitbox將由fake-ajax填充。 – Teson 2013-03-15 10:44:04

+0

你說得對,我已經編輯了附加信息的答案。 – cernunnos 2013-03-15 11:15:17