识别jquery-ui对象的问题

时间:2011-05-14 02:09:23

标签: jquery user-interface autocomplete

我在使用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);
        }
    }
});

谢谢!

2 个答案:

答案 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
}

这基本上会阻止点击冒泡,因此不会触发文档点击。