2015-10-07 107 views
0

我試圖創建一個html & jQuery菜單,它使用箭頭鍵進行導航,並使用輸入按鈕「點擊」所述菜單中的鏈接。jQuery .trigger不會觸發輸入擊鍵

我創建了一個fiddle和菜單是住在homepage of my website但這裏是菜單HTML:

<ul id="home_menu"> 
     <li class="arrow-link"><a href="/blog/">Blog</a></li> 
     <li><a href="/resume/">Resume</a></li> 
     <li><a href="/portfolio/">Portfolio</a></li> 
     <li><a href="/tools">Tutorials</a></li> 
     <li><a href="/contact/">Contact</a></li> 
    </ul> 

這裏是.arrow-link類:

.arrow-link{ 
    background: url(media/images/selectArrow.png) no-repeat; 
    background-position: 0 3px; 
} 

如果您查看控制檯你可以看到我正在記錄兩個變量,位置計數器,它指示.arrow-link類應用於的<li>元素(請參見sc ript below)和按鍵值,這是非常自我解釋。

我創建了一個腳本,這是非常簡單的,只是切換的.arrow-link類取決於位置計數器值:

var pos = 1; 

     jQuery(document).keydown(function (e) { 

      switch (e.which) { 

       case 38: // up 

        pos--; 

        if (pos > 5) { 
         pos = 1; 
        } else if (pos < 1) { 
         pos = 5; 
        } 

        moveArrow(pos, e.which); 

        break; 

       case 40: // down 

        pos++; 

        if (pos > 5) { 
         pos = 1; 
        } else if (pos < 1) { 
         pos = 5; 
        } 

        moveArrow(pos, e.which); 

        break; 

       case 13: // enter 

        console.log("Keystroke Value: " + e.which + " (Enter)"); 
        jQuery('.arrow-link a').trigger("click"); 

        break; 


       default: 
        return; // exit this handler for other keys 
      } 
      e.preventDefault(); // prevent the default action (scroll/move caret) 
     }); 

     function moveArrow(pos, e) { 

      console.log("Position counter: " + pos); 
      console.log("Keystroke Value: " + e); 
      jQuery("#home_menu").children().removeClass("arrow-link"); 
      jQuery("#home_menu li:nth-child(" + pos + ")").addClass("arrow-link"); 

     } 
從這個劇本我知道值傳遞給案件

所以聲明是正確的,並且我可以在按下輸入按鈕時將輸出生成到控制檯,但在嘗試模擬點擊的行上(jQuery('.arrow-link a').trigger("click");),沒有任何反應。我沒有在控制檯中看到任何錯誤,它只是沒有做任何事情。

我也試過用(".arrow-link a").click();而不是jQuery('.arrow-link a').trigger("click");,但是再次沒有骰子。

我需要什麼使用那裏使用戶到相應的鏈接?

回答

1

即使是在一個「一」元素觸發的點擊並不會在jQuery的工作,但是,你可以簡單地使用香草的javascript:

document.querySelector('.arrow-link a').click(); 

這裏你可以看到一個工作小提琴:JSFiddle

這是類似的問題在這裏:Can I call jquery click() to follow an <a> link if I haven't bound an event handler to it with bind or click already?

+0

噢,是的,我曾看過這個問題,但我無法找到它第二次出於某種原因。感謝您發佈它。 –

+0

非常感謝的人! –