百度搜索热词下拉
Posted 还能再菜点吗?
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度搜索热词下拉相关的知识,希望对你有一定的参考价值。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <style> *{ padding:0; margin:0} input,ul{ width:200px;} ul{ border:1px solid #ccc; display:none} li{ height:25px; line-height:25px;list-style:none;border-bottom:1px dashed #ddd} li:hover, li.active{ background:#f0f0f0;} </style> <body> <div class="select-box"> <input type="text" placeholder="选择项目" class="input"> <ul class="xl-box"> <li>选项一</li> <li>选项二</li> <li>3333</li> <li>4444</li> </ul> </div> <div class="select-box"> <input type="text" placeholder="选择项目" class="input"> <ul class="xl-box"> <li>选项一</li> <li>选项二</li> <li>3333</li> <li>4444</li> </ul> </div> <div class="select-box3"> <input type="text" placeholder="选择项目" class="input"> <ul class="xl-box"> <li>选项一</li> <li>选项二</li> <li>3333</li> <li>4444</li> </ul> </div> <div class="select-box4"> <input type="text" placeholder="用百度搜索" class="input"> <ul class="xl-box"> <!--<li>选项一</li> <li>选项二</li> <li>3333</li> <li>4444</li>--> </ul> </div> <script src="js/jquery.js"></script> </body> </html>
第一部分: 以上为多种效果基础html代码布局,简单略过,重点在下面。
第二部分:js代码,以及简单解释
js面向对象从
1.基础的下拉到;
2.键盘方向键进行选取;
3.再到百度热词ajax下拉
一下三种方式可单一摘取出来进行使用,此组件还算完整。
由于时间有限没有做站内搜索结果展示页,
有时间再更新....
<script> /** *@file 输入框获取焦点显示下拉框 *@author Zhou *@time 2016/10/27 */ function Selectfn (o, options) { this.defaults = { input: \'.input\', // 输入框 ul: \'.xl-box\' // 下拉框 }; this.opts = $.extend({}, this.defaults, options); this.obj = o; this.input = this.obj.find(this.opts.input); this.ul = this.obj.find(this.opts.ul); this.li = this.ul.find(\'li\') this.init(); } Selectfn.prototype = { constructor: Selectfn, init: function () { var _this = this; this.input.on(\'focus\', function(){ _this.focusFn() }); this.input.on(\'blur\', function(){ _this.blurFn() }); this.obj.on(\'click\', \'li\', function(){ var _this1 = $(this); _this.selFn(_this1) }) }, focusFn: function () { this.ul.slideDown() }, blurFn: function () { this.ul.slideUp() }, selFn: function (_this1) { console.log(_this1.text()) this.input.val(_this1.text()) } } $(\'.select-box\').each(function(){// 实例化 new Selectfn ($(this)); }); /** *@file 继承Selectkey,实现方向键选择下拉列表 *@author Zhou *@time 2016/10/27 */ function Selectkey(o, options) { Selectfn.call(this, o, options); //继承属性 } for (i in Selectfn.prototype) { Selectkey.prototype[i] = Selectfn.prototype[i]; //深拷贝方法 } Selectkey.prototype.constructor = Selectkey; //改变constructor指向 Selectkey.prototype.focusFn = function () { var _this = this; this.i = -1; this.ul.slideDown(); $(document).on(\'keydown\', function(e){ // 绑定键盘事件 if (e.keyCode == 38 || e.keyCode == 40) { _this.keybordFn(e); _this.selFn(_this.li.eq(_this.i)) } }) } Selectkey.prototype.blurFn = function () { this.ul.slideUp() $(document).unbind(\'keydown\'); // 解绑键盘事件 } Selectkey.prototype.keybordFn = function (e) {// 方向键事件 var dir = e.keyCode; if (dir == 38) { this.i <= 0 ? this.i = this.li.length - 1 : this.i--; } else if (dir == 40) { this.i >= this.li.length - 1 ? this.i = 0 : this.i++ } else {return} this.li.eq(this.i).addClass(\'active\').siblings().removeClass(\'active\'); } new Selectkey ($(\'.select-box3\'));// 实例化 /** *@file 百度热词下拉实例 *@author Zhou *@time 2016/10/27 *@ajaxUrl https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=js&cb=aa */ function Baidusearch (o, options) { var _this = this; Selectkey.call(this, o, options); //继承属性 this.input.bind(\'keyup\', function(e){ if (e.keyCode == 38 || e.keyCode == 40) return; _this.keyupFn(e, $(this)) }) } for (i in Selectkey.prototype) { Baidusearch.prototype[i] = Selectkey.prototype[i]; //深拷贝方法 } Baidusearch.prototype.keyupFn = function (e, othis) { var oval = othis.val(); var _this = this; $.ajax({ url: \'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=\'+oval+\'&cb=success_callback\', dataType: "jsonp", jsonpCallback: "success_callback", success: function(data){ //console.log(data.s) var html = \'\'; for(i in data.s){ html +=\'<li>\' + data.s[i] + \'</li>\' } _this.ul.html(html); _this.li = _this.ul.find(\'li\') } }) } new Baidusearch ($(\'.select-box4\'));// 实例化 </script>
下面是实例效果:
只展示百度热词下拉效果:
以上是关于百度搜索热词下拉的主要内容,如果未能解决你的问题,请参考以下文章