我有一个菜单,用户单击链接并通过.addClass( "show-nav" ).
这是带有 JS 代码的jsFiddle:
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" );
}
}
});
Run Code Online (Sandbox Code Playgroud)
show-nav如果用户在带有 class 的 div之外单击,我想删除该类show-nav。我该怎么做呢?
我已经看到了e.targetdiv ID 但没有看到类的例子,尤其是这样的场景。
您可以在元素event.stopPropagation()上添加一个侦听器,并在主体上添加另一个侦听器,以在之前未拦截的情况下捕获此事件。
像这样的东西:
$(".show-nav").on("click", function(event){
event.stopPropagation();
});
$("body").on("click", function(event){
$(".show-nav").hide(); // or something...
});
Run Code Online (Sandbox Code Playgroud)
为了简化您的用例,这里有一个JSFiddle。
$(".show-nav").on("click", function(event){
event.stopPropagation();
});
$("body").on("click", function(event){
$(".show-nav").hide(); // or something...
});
Run Code Online (Sandbox Code Playgroud)
$(".trigger").on("click", function(event)
{
$(".menu").toggle();
event.stopPropagation();
});
$(".menu").on("click", function(event)
{
event.stopPropagation();
});
$(document).on("click", function(event)
{
$(".menu").hide();
});Run Code Online (Sandbox Code Playgroud)
.menu
{
display: none;
background: yellow;
}Run Code Online (Sandbox Code Playgroud)