Javascript 自动完成关闭错误
我对jQueryUIAutoComplete的close参数有一个问题 基本上,当关闭参数中的代码处于打开状态时,如果我单击一个链接,则自动完成将消失,但链接不会触发 如果我删除代码,它就可以正常工作 JS通过JS Lint正常运行,没有控制台错误 有人有什么想法吗Javascript 自动完成关闭错误,javascript,jquery,jquery-ui,jquery-autocomplete,Javascript,Jquery,Jquery Ui,Jquery Autocomplete,我对jQueryUIAutoComplete的close参数有一个问题 基本上,当关闭参数中的代码处于打开状态时,如果我单击一个链接,则自动完成将消失,但链接不会触发 如果我删除代码,它就可以正常工作 JS通过JS Lint正常运行,没有控制台错误 有人有什么想法吗 $('.mega-menu-search').autocomplete({ source: window.searchTA.split(','), select: function( event, ui ) {
$('.mega-menu-search').autocomplete({
source: window.searchTA.split(','),
select: function( event, ui ) {
megaMenuSearchAbort();
megaMenuSearchTimeAndGo();
lastSearch = $(this).val();
},
close: function(event, ui ) {
// This is the troublesome code
if($("#mega-menu-search-results").css("padding-top") !="0px") {
$("#mega-menu-search-results").css("padding-top", "0px");
}
}
}).autocomplete("widget").addClass("mega-menu-autocomplete");
好吧,我找到了解决办法
我猜在运行close参数中的任何函数后,autocomplete都必须返回false或停止传播
在下面的代码中,我删除了原始代码中多余的if语句,尽管即使保留了它,这个修复仍然有效
$('.mega-menu-search').autocomplete({
source: window.searchTA.split(','),
select: function( event, ui ) {
megaMenuSearchAbort();
megaMenuSearchTimeAndGo();
lastSearch = $(this).val();
},
close: function(event, ui ) {
// Changed code
if(e.target.nodeName != 'A') {
$("#mega-menu-search-results").css("padding-top", "0px");
}
//
}
}).autocomplete("widget").addClass("mega-menu-autocomplete");
如果要将
padding top
设置为零(如果它不是零),那么为什么要将其封装为If
,而不是将其设置为零?(您是否确实检查了从$(“#mega menu search results”).css(“padding top”)
返回的值,如果它实际上就是字符串“0px”
?)非常好的一点,这是我以前的一些代码的遗留问题。如果我删除If语句,问题仍然存在。你所说的“链接未触发”是什么意思?链接不会去任何地方,只会出现自动完成弹出窗口消失。如果您再次单击它,它就会工作。但是,当你浏览链接时,你会得到一个指针,url显示在浏览器的左下角,因此它肯定是一个可单击的元素。如果单击了链接,我应该添加这项功能来阻止事件发生。这修复了我的特定场景,如果您想做其他事情,就必须进行扩展。