Jquery 在单击“外部”时隐藏按钮

Jquery 在单击“外部”时隐藏按钮,jquery,html,button,Jquery,Html,Button,我不知道怎么做,因为我是一个新手。单击按钮.dropB时,我需要一个下拉菜单.dmenu,并需要该.dmenu在按钮之外的任何位置单击或点击按钮后立即隐藏 $('.dropB').click(function(){ $('.dmenu').toggle(); }) 但这不允许在单击.dropB之外的任何位置时隐藏它。 如果您有任何帮助,我们将不胜感激。使用委派来处理对文档的单击。检查目标,如果它与您的按钮匹配,则切换菜单。如果没有,则隐藏菜单 演示: 您可能还需要检查目标是否是菜单

我不知道怎么做,因为我是一个新手。单击按钮
.dropB
时,我需要一个下拉菜单
.dmenu
,并需要该
.dmenu
在按钮之外的任何位置单击或点击按钮后立即隐藏

$('.dropB').click(function(){
      $('.dmenu').toggle();
})
但这不允许在单击
.dropB
之外的任何位置时隐藏它。
如果您有任何帮助,我们将不胜感激。

使用委派来处理对文档的单击。检查目标,如果它与您的按钮匹配,则切换菜单。如果没有,则隐藏菜单

演示:


您可能还需要检查目标是否是菜单本身,以便在单击时不会隐藏自己。

使用委派来处理对文档的单击。检查目标,如果它与您的按钮匹配,则切换菜单。如果没有,则隐藏菜单

演示:

您可能还需要检查目标是否是菜单本身,以便在单击时不会隐藏自身。

您可以使用:

$('.dropB').click(function (e) {
    e.stopPropagation();
    $('.dmenu').toggle();
})

$(document).click(function (e) {
    if (!$(e.target).is('.dmenu')) {
        $('.dmenu').hide();
    }
})

您可以使用:

$(document).on("click", function(e) {
    var $target = $(e.target);
    if ($target.hasClass("dropB")) {
        $('.dmenu').toggle();
    } else {
        if (! $target.hasClass("dmenu")) {
            $('.dmenu').hide();
        }
    }
})
$('.dropB').click(function (e) {
    e.stopPropagation();
    $('.dmenu').toggle();
})

$(document).click(function (e) {
    if (!$(e.target).is('.dmenu')) {
        $('.dmenu').hide();
    }
})

你能定义“点击的外部
.dropB
”吗?你能共享标记吗?你能定义“点击的外部
.dropB
”吗?你能分享标记吗?也许可以创建一个提琴,你能制作一个JSFIDLE吗。老习惯!您可能需要使用stopPropogation(),因为单击菜单也是一个单击文档。@Pazza22:我在答案中写道,我认为Op可以从那里开始使用它。@user3187838:添加了fiddle。请您制作一个JSFIDLE。修复@Liam。老习惯!您可能需要使用stopPropogation(),因为单击菜单也是一个单击文档。@Pazza22:我在答案中写道,我认为Op可以从那里开始使用它。@user3187838:添加了fiddle。
$(document).on("click", function(e) {
    var $target = $(e.target);
    if ($target.hasClass("dropB")) {
        $('.dmenu').toggle();
    } else {
        if (! $target.hasClass("dmenu")) {
            $('.dmenu').hide();
        }
    }
})