RELATEED CONSULTING
相關咨詢
選擇下列産品馬上(shàng)在線溝通(tōng)
服務時(shí)間(jiān):9:00-18:00
你(nǐ)可(kě)能遇到了下面的問題
關閉右側工具欄
支持鍵盤按鍵的jQuery導航應用
  • 作(zuò)者:admin
  • 發表時(shí)間(jiān):2013-07-02 14:17:18
  • 來(lái)源:未知

在本文中我将為(wèi)您介紹如何偵聽(tīng)用戶鍵盤按鍵事件,通(tōng)過使用鍵盤來(lái)切換導航菜單,也為(wèi)用戶提供了方便,從而使導航功能更加實用。

查看演示DEMO 下載源碼

XHTML



Welcome!

Some Text

About me

Some Text

Product

Some Text

Service

Some Text

My Blog

Some Text

創建一個(gè)包含導航菜單#nav和(hé)菜單對應的內(nèi)容.box,注意導航菜單中含有(yǒu)對應的字母就是要用到的鍵盤按鍵導航功能。

CSS

#nav{width:460px; margin:0 auto}
#nav ul{list-style:none; height:24px}
#nav ul li{float:left; font-size:14px; font-weight:bold}
#nav ul li a{display:block; color:#369; margin-right:20px}
#nav ul li a:hover{color:#f90}
.box{width:400px; height:300px; margin:20px auto; padding:10px 20px; line-height:22px}
.box h2{padding:5px 10px; width:200px; background:#9cf; color:#fff}
#home{background:#15add1}
#about{background:#fdc700}
#product{background:#f80083}
#service{background:#f18300}
#blog{background:#98c313}

以上(shàng)CSS代碼将導航菜單設置為(wèi)一行(xíng),為(wèi)了演示,我給每個(gè)導航菜單對應的模塊內(nèi)容背景設置了不同的顔色。

jQuery

關鍵來(lái)看jQuery,首先要引用jquery庫,以及我分離出來(lái)的一個(gè)keynav.js文件。


接下來(lái)在keynav.js文件中準備兩個(gè)函數(shù),一個(gè)是當用戶按鍵操作(zuò)時(shí)用來(lái)調用的函數(shù)showViaKeypress(),當用戶按鍵時(shí),導航對應的模塊顯示出來(lái),其他模塊隐藏,請(qǐng)看代碼:

function showViaKeypress(element_id){
	$(".box").css("display","none");
	$(element_id).slideDown("slow");
}

另一個(gè)函數(shù)showViaLink(),簡單的說是用一個(gè)數(shù)組處理(lǐ)當用戶點擊導航菜單時(shí),鏈接對應的模塊。即當用戶不使用鍵盤按鍵操作(zuò)時(shí)還(hái)可(kě)以使用常規的鼠标點擊方法來(lái)導航。

function showViaLink(array){
	array.each(function(i){
		$(this).click(function(){
			var target = $(this).attr("href");
			$(".box").css("display","none");
			$(target).slideDown("slow");
		});
	});
}

最後,當頁面加載的時(shí)候,jQuery要處理(lǐ)以下事情:

1、除了首頁#home模塊顯示外,其他導航對應的模塊都要先隐藏。

2、調用showViaLink()函數(shù),相應點擊導航鏈接。

3、偵聽(tīng)用戶按鍵操作(zuò),調用showViaKeypress()函數(shù),完成切換導航功能。

$(function(){
	$(".box").css("display","none");
	$("#home").css("display","block");

	showViaLink($("#nav ul li a"));

	// listens for any navigation keypress activity
	$(document).keypress(function(e){
		switch(e.which){
			// user presses the "a"
			case 97:
			    showViaKeypress("#home");
				break;	

			// user presses the "s" key
			case 115:
			    showViaKeypress("#about");
				break;

			// user presses the "d" key
			case 100:	
			    showViaKeypress("#product");
				break;

			// user presses the "f" key
			case 102:
			    showViaKeypress("#service");
				break;

			// user presses the "g" key
			case 103:
			   showViaKeypress("#blog");
		}
	});
});

注意使用ASCII值,偵聽(tīng)到用戶按下的鍵值,如小(xiǎo)寫的“a”對應的ASCII值是“97”