小练习:用jQuery简单模拟百度搜索框的提示功能
今天第一次接触jQuery,用jQuery模拟了一下百度搜索的自动提示功能。连带jQuery的基本知识点,简单总结如下:
首先得在工程中导入插件:jquery-1.4.2.js ,并在html的head中引入该js:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=GBK"> 5 <title>搜索提示</title> 6 <script type="text/javascript" src="../js/jquery-1.4.2.js"></script> 7 </head>
准备好页面要显示的内容:
1 <body> 2 <div align="center"> 3 <input type="text" id="keywords"> 4 <input type="button" value="百度一下" id="searchbutton"> 5 <div class="message_area" align="left"> 6 <li>中国达人秀</li> 7 <li>中国好声音</li> 8 <li>中国好歌曲</li> 9 <li>中国好舞蹈</li> 10 <li>中国好男人</li> 11 <li>中国好基友</li> 12 <li>中国好闺蜜</li> 13 <li>中国好太太</li> 14 <li>中国好嫂子</li> 15 <li>中国移动</li> 16 </div> 17 </div> 18 </body>
其中的类选择器和id选择器的样式如下:
1 <style type="text/css"> 2 #keywords { 3 font-size: 28px; 4 width: 500px; 5 } 6 7 #searchbutton { 8 font-size: 28px; 9 } 10 11 .message_area { 12 width: 500px; 13 border: 1px solid #999; 14 margin-left: -147px; 15 display:none; 16 } 17 18 .message_area li { 19 list-style: none; 20 padding: 2px; 21 } 22 23 .backclass{ 24 background:grey; 25 } 26 </style>
最后,定义事件:
1 <script type="text/javascript"> 2 $(function(){ 3 //焦点事件 4 $("#keywords").focus(); 5 6 //键盘松下事件 7 $("#keywords").keyup(function(){ 8 //alert($(this).val()); 9 var keyword = $(this).val(); 10 //对输入的字段进行处理 11 if(keyword.length>0){ 12 //通过关键字 去后台获取数据,把获取到的数据放到message_area ,然后显示这个区域.. 13 $(".message_area").show(); 14 }else{ 15 $(".message_area").hide(); 16 } 17 18 }); 19 20 //鼠标进入事件 21 $(".message_area>li").mouseover(function(){ 22 $(".message_area>li").removeClass("backclass"); 23 $(this).addClass("backclass"); 24 }); 25 26 //鼠标离开事件 27 $(".message_area>li").mouseout(function(){ 28 $(this).removeClass("backclass"); 29 }); 30 31 //失去焦点事件 32 $("#keywords").blur(function(){ 33 $(".message_area").hide(); 34 }); 35 36 //监听键盘,实现上下键选择div里面的li 37 $(window).keydown(function(event){ 38 //alert(event.keyCode); 39 //左:37,上:38,右:39;下:40 40 switch(event.keyCode){ 41 case 40:{ //处理按下下键的业务逻辑 42 if($(".backclass").size()==0){ 43 //如果是第一次按下键 44 $(".message_area>li:first").addClass("backclass"); 45 }else{ 46 //获取到当前元素然后拿它的下一个元素调用size 方法 47 if($(".backclass").next().size()==0){ 48 $(".message_area>li:first").addClass("backclass"); 49 $(".message_area>li:last").removeClass("backclass"); 50 }else{ 51 $(".backclass").removeClass("backclass").next().addClass("backclass"); 52 } 53 } 54 $("#keywords").val($(".backclass").text()); 55 break; 56 } 57 case 38:{ 58 if($(".backclass").prev().size()==0){ 59 $(".message_area>li:last").addClass("backclass"); 60 $(".message_area>li:first").removeClass("backclass"); 61 }else{ 62 $(".backclass").removeClass("backclass").prev().addClass("backclass"); 63 } 64 $("#keywords").val($(".backclass").text()); 65 break; 66 } 67 } 68 69 }); 70 }) 71 72 </script> 73 74 </html>
在程序中,提示是给定的几个固定的选项,都是以中国开头,只要在输入框中有输入,就会弹出提示框,在提示框中定义了四个事件:鼠标进入,鼠标移出,光标向上和光标向下,在光标事件中,移动光标会自动将提示显示到输入框中。
这个Demo只是一个简单的模拟,仅仅作为学习知识所用。有关jQuery的更多知识点,有待继续学习和整理。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。