Javascript 如果单击div外部(目标类),则删除类
我有一个菜单,用户点击链接,列表通过Javascript 如果单击div外部(目标类),则删除类,javascript,jquery,Javascript,Jquery,我有一个菜单,用户点击链接,列表通过.addClass(“show nav”)显示 以下是JS代码: jQuery(".nav-js-trigger").each(function(){ this.onclick = function() { var hasClass; hasClass = jQuery(this).next().hasClass( "show-nav" ); jQuery('.show-nav').removeCla
.addClass(“show nav”)
显示
以下是JS代码:
jQuery(".nav-js-trigger").each(function(){
this.onclick = function() {
var hasClass;
hasClass = jQuery(this).next().hasClass( "show-nav" );
jQuery('.show-nav').removeClass('show-nav');
if (hasClass === false) {
jQuery(this).next().addClass( "show-nav" );
}
}
});
如果用户使用classshow nav
在div的外部单击,我想删除classshow nav
我该怎么做?
我看到过
e.target
div ID而非class的示例,尤其不是这样的场景。您可以在元素上添加一个带有event.stopPropagation()
的侦听器,并在主体上添加另一个侦听器,以便在之前未被拦截的情况下捕获此事件
大概是这样的:
$(".show-nav").on("click", function(event){
event.stopPropagation();
});
$("body").on("click", function(event){
$(".show-nav").hide(); // or something...
});
为了简化您的用例,下面是一个示例
$(.trigger”)。在(“单击”)上,函数(事件)
{
$(“.menu”).toggle();
event.stopPropagation();
});
$(“.menu”)。在(“单击”上,函数(事件)
{
event.stopPropagation();
});
$(文档)。在(“单击”)上,函数(事件)
{
$(“.menu”).hide();
});代码>
菜单
{
显示:无;
背景:黄色;
}
您好
您可以将一个侦听器添加到包含事件的元素中。stopPropagation()
,并将另一个侦听器添加到主体中,以捕获此事件(如果之前未被拦截)
大概是这样的:
$(".show-nav").on("click", function(event){
event.stopPropagation();
});
$("body").on("click", function(event){
$(".show-nav").hide(); // or something...
});
为了简化您的用例,下面是一个示例
$(.trigger”)。在(“单击”)上,函数(事件)
{
$(“.menu”).toggle();
event.stopPropagation();
});
$(“.menu”)。在(“单击”上,函数(事件)
{
event.stopPropagation();
});
$(文档)。在(“单击”)上,函数(事件)
{
$(“.menu”).hide();
});代码>
菜单
{
显示:无;
背景:黄色;
}
你好
请在你的问题中发布一个完整的代码示例。请在你的问题中发布一个完整的代码示例。你能更新小提琴吗?我尝试添加您的代码,但不幸的是没有成功:@henrikpeterson,添加了JSFIDLE和代码片段。。。我已经改变了你的一点(好的,很多),使它更简单,更灵活…非常感谢你的更新,虽然现在你不能隐藏div当你再次点击菜单。若你们看到我原来的提琴并点击菜单两次,你们就会明白我的意思:--一旦这个问题合格,我将以50分奖励它。@Henrikpeterson,没问题。。。只需再次更新代码,将$(“.trigger”)
中的.show()
更改为.toggle()
。。。你能再试一次吗?很好,尽管我还有最后一个要求。代码需要使用它的原始方法,将show nav类添加到div。您的方法仍然可以这样做吗?您可以更新fiddle吗?我尝试添加您的代码,但不幸的是没有成功:@henrikpeterson,添加了JSFIDLE和代码片段。。。我已经改变了你的一点(好的,很多),使它更简单,更灵活…非常感谢你的更新,虽然现在你不能隐藏div当你再次点击菜单。若你们看到我原来的提琴并点击菜单两次,你们就会明白我的意思:--一旦这个问题合格,我将以50分奖励它。@Henrikpeterson,没问题。。。只需再次更新代码,将$(“.trigger”)
中的.show()
更改为.toggle()
。。。你能再试一次吗?很好,尽管我还有最后一个要求。代码需要使用它最初的方法将show nav类添加到div中。您的方法仍然可以这样做吗?