Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery div以正确打开/关闭隐藏div_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript Jquery div以正确打开/关闭隐藏div

Javascript Jquery div以正确打开/关闭隐藏div,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我已经创建了一些代码,当单击一个div(“按钮”)时,它将隐藏/取消隐藏一个隐藏的div。我还希望在单击屏幕上的任何位置时隐藏div。这些代码似乎相互冲突 $(document).ready(function () { $(document).on("click", "#help-icon", function () { console.log('hi'); $("#help-menu").toggle(); }); $(documen

我已经创建了一些代码,当单击一个div(“按钮”)时,它将隐藏/取消隐藏一个隐藏的div。我还希望在单击屏幕上的任何位置时隐藏div。这些代码似乎相互冲突

$(document).ready(function () {

    $(document).on("click", "#help-icon", function () {
        console.log('hi');
        $("#help-menu").toggle();
    });

    $(document).mouseup(function (e) {
        var hlpcont = $("#help-menu");
        if (!hlpcont.is(e.target) && 
            hlpcont.has(e.target).length === 0) {
            hlpcont.hide();
        }
    });

});
jsfiddle:

编辑:如果要单击显示的div而不再次隐藏它:

$(document).click(function(eventObj)
{
    if (eventObj.target.id == "help-icon") {
        $("#help-menu").toggle();
    } else if($(eventObj.target).hasClass("help-dropdown"))  {
        $("#help-menu").show();
    } else {
        $("#help-menu").hide();
    }


});

在我的测试中,mouseup函数在click函数之前激发。mouseup函数检查事件的目标。单击按钮时,mouseup事件的目标是按钮,因此mouseup函数隐藏div,然后单击函数激发并将div切换回可见状态

我要做的是在mouseup中检查事件的目标并跳过click事件:

$(document).mouseup(function (e)
    {
        var hlpcont = $("#help-menu");
        var hlpIcon = $("#help-icon");
        if(hlpIcon.is(e.target)){
            hlpcont.toggle();
        }else
            {
              hlpcont.hide(); 
            }

    });

你忘了把HTML放在小提琴里。那么,问题出在哪里?JSFIDLE对我来说似乎工作得很好。我点击按钮,它会打开div,我点击任何地方(但div本身和按钮除外),它会关闭。这实际上会关闭div,如果在itI内部点击,它会显示。我编辑了我的回复,以包括一个案例,如果在其中点击,你不希望出现的div消失
$(document).mouseup(function (e)
    {
        var hlpcont = $("#help-menu");
        var hlpIcon = $("#help-icon");
        if(hlpIcon.is(e.target)){
            hlpcont.toggle();
        }else
            {
              hlpcont.hide(); 
            }

    });