"该资源主要涉及使用jQuery实现搜索功能,特别是与`ul li`列表相关的键盘和鼠标事件处理。在用户输入关键词时,通过键盘的上、下箭头选择`li`元素,并实现高亮显示。同时,描述中提到了在用户失去焦点时的处理以及异步获取数据填充搜索建议的功能。" 在网页开发中,jQuery库提供了丰富的DOM操作和事件处理方法,使得JavaScript编程更加简洁。在这个示例中,jQuery用于创建一个搜索功能,包括键盘事件监听和鼠标事件处理。以下是相关知识点的详细说明: 1. **jQuery选择器**:`$("#q")`表示选择ID为"q"的元素,这通常是一个输入框(input),用户在此输入搜索关键词。 2. **事件绑定**:`$(document).ready()`确保页面加载完成后执行内部函数。`$("#q").blur(qblur)`绑定`blur`事件,即当输入框失去焦点时调用`qblur`函数。`$("#q").keyup(function(event) {...})`绑定`keyup`事件,监听用户在输入框中按键后抬起的行为。 3. **键盘事件判断**:`event.keyCode`用于获取用户按下的键的ASCII码。`if((event.keyCode!=38)&&(event.keyCode!=40)&&(event.keyCode!=13))`检查是否触发了上箭头(38),下箭头(40)或回车键(13)。如果不是这些键,则执行`autoCom()`函数,提供搜索建议。 4. **异步请求**:`$.post()`是jQuery的AJAX方法,用于向服务器发送POST请求。在这个例子中,它向`hot_words_search.php`发送包含搜索关键字的数据,并接收返回的JSON响应。 5. **JSON解析**:`$.evalJSON(response)`将服务器返回的JSON字符串转换为JavaScript对象,便于进一步处理。 6. **DOM操作**:`$("#hot-list").html("")`清空ID为"hot-list"的元素(通常是一个`ul`列表),`hot_list += '<li id="li_'+i+'" onfocus="lifocus(this.id)"><span class="suggest-key">'+jsonobj[i].name+'</span><span class="suggest-result">蕾'+jsonobj[i].count`动态构建并添加`li`元素,其中包含了搜索建议和相应的计数。 7. **类名操作**:`classname="class='selected'"`为第一个搜索建议项设置选定类,使其默认高亮。`lifocus(this.id)`是`li`元素获取焦点时的回调函数,可能用于处理选中效果。 8. **事件委托**:虽然代码中没有直接使用事件委托,但可以考虑使用`.on()`方法来绑定事件,特别是在`li`元素是动态生成的情况下,这样可以提高性能。 9. **颜色变化**:在描述中提到的"li变色"可能是通过CSS类来实现的,比如`selected`类,当`li`元素被选中时,可以通过这个类改变其样式。 通过这些技术,开发者可以创建一个交互性强且用户体验良好的搜索功能,用户可以用键盘导航列表,鼠标点击选择,同时实现搜索建议的实时更新。
/**
*jquery 代码
*
*/
<script type="text/javascript">
$(document).ready(function(){
$("#q").blur(qblur);
$("#q").keyup(function(event){ //为搜索框加键盘事件监听
if((event.keyCode!=38)&&(event.keyCode!=40)&&(event.keyCode!=13)){ //判断键盘事件,抛弃上下键跟回车键
autoCom();
}
});
});
//============================================================
function autoCom(){
var searchKey;
var searchType;
searchKey = $("#q").attr("value");
//searchType = $("div#multipleselect a").attr("class");
if(searchKey){ //判定文本框是否为空
$.post("hot_words_search.php",{key:searchKey},function(response){
var listLength; //li长度
var currentList; //选中li位置
currentList = -1 ; //初始化为-1
var jsonobj = $.evalJSON(response);
// alert(jsonobj[0].name+'\n'+ jsonobj[0].count);
var hot_list = " ";
for(var i=0;i<jsonobj.length;i++){
var classname="";
if(i==0){
classname="class='selected'";
}
hot_list =hot_list+'<li id="li_'+i+'" onfocus="lifocus(this.id)"> <span class="suggest-key">'+jsonobj[i].name+'</span> <span class="suggest-result">约'+jsonobj[i].count+'件宝贝</span> </li>';
}
// alert(hot_list);
$("#hot-list").html(hot_list);
//listLength = $("#searchSuggest ul li").length;
listLength = $("#hot_words li").size() //li个数
alert("li个数:"+listLength);
if(listLength > 1){//判断是否有返回内容
$('#hot_words').css('visibility',"");// //显示提示框
}else{
$('#hot_words').css('visibility',"hidden"); //隐藏提示框
}
$("#hot_words li").hover( //鼠标事件
function(){
$(this).removeClass();//先清除样式 避免冲突
$(this).addClass("selected");
var q = $(this).children(".suggest-key").text();
$("#q").val(q);
剩余6页未读,继续阅读
- 粉丝: 4
- 资源: 22
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 高效办公必备:可易文件夹批量生成器
- 吉林大学图形学与人机交互课程作业解析
- 8086与8255打造简易乒乓球游戏机教程
- Win10下C++开发工具包:Bongo Cat Mver、GLEW、GLFW
- Bootstrap前端开发:六页果蔬展示页面
- MacOS兼容版VSCode 1.85.1:最后支持10.13.x版本
- 掌握cpp2uml工具及其使用方法指南
- C51单片机星形流水灯设计与Proteus仿真教程
- 深度远程启动管理器使用教程与工具包
- SAAS云建站平台,一台服务器支持数万独立网站
- Java开发的博客API系统:完整功能与接口文档
- 掌握SecureCRT:打造高效SSH超级终端
- JAVA飞机大战游戏实现与源码分享
- SSM框架开发的在线考试系统设计与实现
- MEMS捷联惯导解算与MATLAB仿真指南
- Java实现的学生考试系统开发实战教程