我試圖創建一個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");
,但是再次沒有骰子。
我需要什麼使用那裏使用戶到相應的鏈接?
噢,是的,我曾看過這個問題,但我無法找到它第二次出於某種原因。感謝您發佈它。 –
非常感謝的人! –