Javascript 单击按钮时隐藏和显示
我有这样的代码(HTML/CSS/JS):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
$('.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悬停{
显示:无;
}
我认为点击功能应该是:
$('.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悬停{
显示:无;
}
Jade的可读性较差,最好提供HTML。@dfsq我改为代码段你能做一个JSFIDLE吗?@Mustaghees这里是有区别的吗?不幸的是,在区域外单击可以将子菜单隐藏在那里,对不起,我又回到这里了。我还有一个问题,我在子菜单上有链接怎么样?像这样,链接不起作用。对不起,忽略这一点。刚刚找到答案:)。非常感谢。