Jquery:不使用id

Jquery:不使用id,jquery,html,Jquery,Html,我想制作一个下拉菜单,这样当点击页面上除下拉菜单或指向下拉菜单的链接以外的任何地方时,下拉菜单都会隐藏。 Jquery: HTML: 链接一 链接二 链接三 HTML和CSS Javascript 我有其他代码,使下拉列表实际上下拉。使用此代码,下拉列表将保持隐藏状态, 和您没有使用:不正确。试试这个: JSFIDLE[ 啊,那不是:not选择器所做的不幸的是:not选择器只选择“body”元素(而不是它的子元素),因此:not不会在那里做任何事情 在单击功能中,您可以只查询元素,例

我想制作一个下拉菜单,这样当点击页面上除下拉菜单或指向下拉菜单的链接以外的任何地方时,下拉菜单都会隐藏。
Jquery:

HTML:


链接一
链接二
链接三
HTML和CSS

Javascript

我有其他代码,使下拉列表实际上下拉。使用此代码,下拉列表将保持隐藏状态,

您没有使用:不正确。试试这个:

JSFIDLE[


啊,那不是:not选择器所做的不幸的是:not选择器只选择“body”元素(而不是它的子元素),因此:not不会在那里做任何事情

单击
功能中,您可以只查询元素,例如:

$('body').click(function(){
    if ($(this).attr('id') !== 'top-links-bar') {
        $('.dropdown').hide();
    }
});
编辑:以上是错误的,事实上,这会起作用。谢谢@SLaks和@Huangism:

$('body').click(function(e){
    if (!$(e.target).closest().length) {
        $('.dropdown').hide();
    }
});

在selecor中存在问题,您检查没有id的身体顶部链接栏此错误每次尝试此

    $('body div:not(#top-links-bar)').click(function () {
        $('.dropdown').hide();
    });
 $('body').click(function(e){
        if (!$(e.target).parents('#top-links-bar').length) {
            $('.dropdown').hide();
        }
    });
我想你同意下面的评论

试试这个

$('body').click(function(e){
    if (!$(e.target).closest('#top-links-bar').length) {
        $('.dropdown').hide();
    }
});
或者试试这个

    $('body div:not(#top-links-bar)').click(function () {
        $('.dropdown').hide();
    });
 $('body').click(function(e){
        if (!$(e.target).parents('#top-links-bar').length) {
            $('.dropdown').hide();
        }
    });

错。他的语法很好,这也不起作用。不,下拉列表不会出现。是的,我放弃了添加.children()方法。我可以快速键入:)检查
。最近(“#顶部链接栏”)。长度
以及目标id,这将包括单击菜单中和菜单上的任意位置。只需执行
!$(e.target)。最近().length
No;他也想处理非
div
s。当你不点击一个div时会发生什么?这不是很灵活。你将点击绑定到所有div,而不仅仅是body或Xin的答案是更好的方式。这是一个不起作用的例子,这个答案要求所有内容都包装在一个divin这个html代码中任何东西都是用div包装的,我现在可以使用了,但是当我尝试将相同的代码放到另一个文件中时,它不起作用。有什么原因吗?使用根本不起作用的
$('body*:not(…))
。也就是说,jquery不起作用。
 $('body').click(function(e){
        if (!$(e.target).parents('#top-links-bar').length) {
            $('.dropdown').hide();
        }
    });