js模拟百度模糊搜索的实例

时间:2021-05-26

废话不多说,直接上代码

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> *{ margin:0; padding:0; } input{ display:block; list-style:none; } html,body{ color:#000; font-size:14px; font-family:'微软雅黑'; } .box{ margin:50px auto; width:300px; } .box input{ padding:0 10px; width:278px; height:30px; border:1px solid green; } .box ul{ display:none; border:1px solid green; border-top:none; } .box ul li{ list-style:none; padding:0 10px; height:30px; line-height:30px; cursor:pointer; } .box ul li:hover{ background:#eee; } </style></head><body> <div class='box'> <input type="text" id='searchInp'/> <ul id='searchBox'> <li>1111</li> <li>2222</li> <li>3333</li> <li>4444</li> </ul> </div> <script src='jquery.min.js'></script> <script> var searchModule = (function(){ var $searchInp = $('#searchInp'), $searchBox = $('#searchBox'); //向百度的服务器发送JSONP请求,把数据绑定到容器当中 function bindHTML(){ var searchKey = $searchInp.val(); function callback(data){ data = data['g']; var str = ''; $.each(data,function(index,item){ if(index<=3){ str += '<li>'+item+'</li>' } }) $searchBox.html(str).stop().slideDown(300); } $.ajax({ url:"https://sp0.baidu.com/5a1Fazu8AA54nxGKo9WTAnF6hhy/su?wd="+searchKey, dataType:"jsonp", jsonp:'cb', success:callback }) } //事件绑定和模块的入口 function init(){ //文本框获取焦点或者输入内容,判断当前文本框中是否有内容,有内容绑定数据,没有内容隐藏展示框 $searchInp.on("focus keyup",function(){ var val = $(this).val(); if(val.length>0){ bindHTML(); return; } $searchBox.stop().slideUp(300); }).on('blur',function(){ window.setTimeout(function(){ $searchBox.stop().slideUp(300); },3000) }) //给展示框中的li绑定方法 $searchBox.on('click',function(e){ var tar = e.target, tarTag = tar.tagName.toUpperCase(), $tar = $(tar); if(tarTag==="LI"){ $searchInp.val($tar.html()); $(this).stop().slideUp(300); } }) } return { init:init } })() searchModule.init(); </script></body></html>

以上这篇js模拟百度模糊搜索的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章