- jquery/
- 为自动完成加载数据时,jQuery悬停不起作用
为自动完成加载数据时,jQuery悬停不起作用
为自动完成加载数据时,jQuery悬停不起作用,jquery,hover,Jquery,Hover,此代码不起作用:
$("ul.lst li").hover(function (event) {
$('#span').text($(this).index());
});
当使用相同的代码和硬编码html时,鼠标悬停在上面可以平滑工作,并给出悬停的li索引。
我错过了什么
var记录=[];
var selectedIndex=null;
var selectedRecord=null;
var=[];
var autocomplete=函数事件,el{
var搜索=el.v
此代码不起作用:
$("ul.lst li").hover(function (event) {
$('#span').text($(this).index());
});
当使用相同的代码和硬编码html时,鼠标悬停在上面可以平滑工作,并给出悬停的li索引。
我错过了什么
var记录=[];
var selectedIndex=null;
var selectedRecord=null;
var=[];
var autocomplete=函数事件,el{
var搜索=el.value;
如果event.key==箭头向下{
ifrecords==null返回;//如果没有结果
如果records.length>0&&selectedIndex==null{
selectedIndex=0;
}
如果records.length>0,则为else&&selectedIndex0&&selectedIndex==null{
selectedIndex=0;
}
如果records.length>0,则为else&&selectedIndex>0{
选择指数-;
}
更改所选类别索引;
}
否则,如果event.key==输入{
}
否则{
selectedIndex=null;
selectedRecord=null;
if records.length==0{
$获得'https://jsonplaceholder.typicode.com/comments'
.donefunction数据{
记录=数据;
//按名称排序
巫术记录;
显示自动完成记录、搜索;
};
}
否则{
显示自动完成记录、搜索;
}
}
}
var showAutoComplete=函数数据,搜索{
search=search.toUpperCase;
fRecords=[];
$.eachdata,函数k,v{
如果v.name.toUpperCase.startsWithsearch{
fRecords.pushv;
如果FRE.length>9
返回false;
}
};
$ul.lst.empty;
如果fRecords.length>0
$ul.lst.addClasssuggest;
其他的
$ul.lst.removeClasssuggest;
$.eachfRecords,函数键,值{
$ul.lst.append+value.name+;
};
}
var sort=函数记录{
records.sortfunction a,b{
var nameA=a.name.toUpperCase;//忽略大小写
var nameB=b.name.toUpperCase;//忽略大小写
如果nameAnameB{return 1;}
//名字必须相等
返回0;
};
}
var changeClass=函数索引{
selectedRecord=记录[selectedIndex];
$ul.lst>li.active.removeClassactive;
如果选择了索引!=null{
$$ul.lst>li[selectedIndex].addClassactive;
$'company.val$$ul.lst>li[selectedIndex].text;
}
}
$'company'.keyupfunction{autocompleteevent,this;};
$'company'。函数{
$ul.lst.removeClasssuggest;
}
//$ul.autocomplete li.hover函数事件{
//调试器;
//selectedIndex=$this.index;
//更改所选类别索引;
//console.logselectedIndex;
//};
$ul.lst li.hoverfunction事件{
$'span'.text$this.index;
};
ul.lst{
显示:无;
}
建议{
显示:块;
}
ul.lst李{
列表样式:无;
填充:7px 12px;
边框:1个实心bbb;
空白:nowrap;
溢出:隐藏;
}
ul.lst>li.active{
背景色:ffcc66;
颜色:000;
z指数:1000;
}
键入自动完成的内容
可能是因为事件是在加载元素之前调用的。您应该等待文档加载后再添加事件,如下所示:
$(function() {
$("ul.lst li").hover(function (event) {
$('#span').text($(this).index());
});
});
$ul.lst li.hover仅将悬停事件处理程序添加到调用它时存在的元素中
要使其应用于所有元素,即使是后来添加的元素,请使用on,如下所示:
$("ul.lst").on('mouseover', 'li', function (event) { {
$('#span').text($(this).index());
});
在选择器中,您在此处指定脚本调用时存在的父元素,即ul.lst,然后,作为第二个参数,您在其中指定其他选择器li。它将在任何时候对ul.lst中添加的任何li起作用。实际上,您不能像这样绑定悬停事件。你必须使用鼠标器或鼠标盖。原因如下: