Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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 单击按钮时隐藏和显示_Javascript_Jquery_Html_Css_Toggle - Fatal编程技术网

Javascript 单击按钮时隐藏和显示

Javascript 单击按钮时隐藏和显示,javascript,jquery,html,css,toggle,Javascript,Jquery,Html,Css,Toggle,我有这样的代码(HTML/CSS/JS): $('.subnav\uu right li a')。单击(函数(e){ e、 预防默认值(); var$this=$(this.parent().find('.subnav_uuhover'); $('.subnav_uuhover')。而不是($this.hide(); $this.toggle(); }); $(文档).mouseup(函数(e) { 变量容器=$('.subnav_uuhover'); 如果(!container.is(e.t

我有这样的代码(HTML/CSS/JS):

$('.subnav\uu right li a')。单击(函数(e){
e、 预防默认值();
var$this=$(this.parent().find('.subnav_uuhover');
$('.subnav_uuhover')。而不是($this.hide();
$this.toggle();
});
$(文档).mouseup(函数(e)
{
变量容器=$('.subnav_uuhover');
如果(!container.is(e.target)&&container.has(e.target).length==0)
{
container.hide();
}
});
.subnav\uu悬停{
显示:无;
}

  • 内容1
  • 内容2
  • 内容3

我认为点击功能应该是:

$('.subnav__right ul li a').click(function(e){
    e.preventDefault();

    var $this = $(this).parent().find('.subnav__hover');
    $('.subnav__hover').not($this).hide();

    $this.toggle();
});

将此绑定到回调或使用该回调

var that = this;
$('.subnav__right li a').click(function(e){
    e.preventDefault();

    var $this = $(that).parent().find('.subnav__hover');
    $('.subnav__hover').not($this).hide();

    $this.toggle();

});

可能删除的不是
operator解决了您的问题(我猜),因此您的JS代码的第二部分将是:

$(document).mouseup(function (e)
{
    var container = $('.subnav__hover');

    if (container.is(e.target) && container.has(e.target).length === 0)
    {
        container.hide();
    }
});

使用以下方法:
$(文档).mouseup(函数(e)
{
var container=$('.subnav_uuhover:visible');
var clickedObj=$(e.target).next('.subnav_uuhover');
如果(!container.is(clickedObj)&&container.has(e.target).length==0)
{
container.hide();
}

});我做了一些小改动,比如更改文档事件和添加
e.stopPropagation()
。请查收

$('.subnav\uu right li a')。单击(函数(e){
e、 预防默认值();
e、 停止传播();
var$this=$(this.parent().find('.subnav_uuhover');
$('.subnav_uuhover')。而不是($this.hide();
$this.toggle();
});
$(文档)。单击(函数(e)
{
变量容器=$('.subnav_uuhover');
如果(!container.is(e.target)&&container.has(e.target).length==0)
{
container.hide();
}
});
.subnav\uu悬停{
显示:无;
}

  • 内容1
  • 内容2
  • 内容3

Jade的可读性较差,最好提供HTML。@dfsq我改为代码段你能做一个JSFIDLE吗?@Mustaghees这里是有区别的吗?不幸的是,在区域外单击可以将子菜单隐藏在那里,对不起,我又回到这里了。我还有一个问题,我在子菜单上有链接怎么样?像这样,链接不起作用。对不起,忽略这一点。刚刚找到答案:)。非常感谢。