我在使用jQuery识别项目时遇到了一个小问题。让我解释一下:)
我有一个菜单,当用户点击按钮时会出现。这很完美。然后,当用户点击网站的任何部分(菜单上除外)时,我希望此菜单消失。这也很有用,但是有一个小问题:在菜单中,有一个项目允许用户从自动完成列表中进行选择。此列表使用jquery-ui自动完成完成。当用户点击这里的项目时,菜单消失(它不应该:)),我不知道如何为此做例外,因为我不知道怎么能抓住这个项目,我可以吗?抓住它上课?它有id吗?
我有以下代码来确定点击的完成位置并继续(您可以看到,如果单击菜单按钮或菜单,菜单将不会隐藏)。如何在自动完成jQuery-ui?
中进行单击时如何进行异常处理$(document).click(function(event) {
if($(event.target).parents().index($('#menu')) == -1 && $(event.target).parents().index($('#menu-button')) == -1) {
if($('#menu').is(":visible")) {
$('#menu').hide(500);
}
}
});
谢谢!
答案 0 :(得分:0)
您可以按班级领取这些项目。 我想我会改变它:
$(document).click(function(event) {
if($(event.target).parents().index($('#menu')) == -1 &&
$(event.target).parents().index($('#menu-button')) == -1 &&
$(event.target).parents().index($('.ui-autocomplete-input')) == -1 &&
$(event.target).parents().index($('.ui-autocomplete')) == -1 ) {
if($('#menu').is(":visible")) {
$('#menu').hide(500);
}
}
});
答案 1 :(得分:0)
自动填充ul
的类别为ui-autocomplete
。所以你可以通过$(".ui-autocomplete")
来获得它。
但是,我做你想做的事情的首选方法是这样做:
$(".ui-autocomplete").click(function(e){
e.stopPropagation();
//... and maybe some other stuff
}
这基本上会阻止点击冒泡,因此不会触发文档点击。