Javascript jQuery切换显示/隐藏默认内容

Javascript jQuery切换显示/隐藏默认内容,javascript,jquery,toggle,show-hide,Javascript,Jquery,Toggle,Show Hide,我有一个显示/隐藏切换,如果单击菜单a,它可以在内容之间切换 在触发单击功能之前,内容将显示在defaultdiv中 出于某种原因,如果您两次单击a标记中的一个,它将成功地打开/关闭内容但是,您会看到一个空白屏幕 这是一个糟糕的用户体验 如果用户两次选择菜单项,如何避免这种情况并确保显示默认内容? $(文档).ready(函数(){ 变量$show=$('.show'); $('.menu a')。在('单击')上,函数(e){ e、 预防默认值(); $show.not(this.stop(

我有一个显示/隐藏切换,如果单击菜单
a
,它可以在内容之间切换

在触发单击功能之前,内容将显示在
default
div中

出于某种原因,如果您两次单击
a
标记中的一个,它将成功地打开/关闭内容但是,您会看到一个空白屏幕

这是一个糟糕的用户体验

如果用户两次选择菜单项,如何避免这种情况并确保显示默认内容?

$(文档).ready(函数(){
变量$show=$('.show');
$('.menu a')。在('单击')上,函数(e){
e、 预防默认值();
$show.not(this.stop().hide(450);
$($(this.attr('href')).stop().toggle(450);
$('.default').addClass('hidden');
});
});
。隐藏{
显示:无;
}

显示屏幕
表演音乐
表演艺术
展示食物

默认内容
尽管我建议用一种完全不同的方法来处理这个问题,但为了让代码正常工作,我还是会这样做。


你的意思是如果再次显示并单击,你不想隐藏吗?@pc_coder是的,因此如果我通过单击两次来完成显示/隐藏操作,我希望默认的
div
可见。与空白屏幕变量atlestoneelemtvisible=false相反,divs=$('.show');divs.forEach(elem=>{if(!elem.style.visiblity('hidden')){//更正语法atLeastOneElemtVisible=true;break;}});如果(!atLeastOneElemtVisible){$('.default').removeClass('hidden');}@RahulDwivedi,您可以将该代码添加为答案,而不是注释。当然可以。基本上就是这样:检查是否所有
show
div都被隐藏。如果是,请从您的
default
div中删除
hidden
类。请原谅任何语法错误。非常好-这就完成了。你介意简要解释一下它正在做什么吗?这样我就可以知道发生了什么。非常感谢!基本上,我所做的是:迭代每个div以找到它们的“display”属性,如果发现其中任何一个可见,showDefault设置为false,即在这种情况下,我们将不显示默认文本。最后在window.setTimeout中用500毫秒(>=450,您已经使用)将其包装起来。这是必要的,以确保早期效果发生,然后才发生。我刚刚意识到,如果单击“屏幕”,它将显示默认内容。如果我再次单击屏幕,它会显示屏幕内容。看起来函数的工作方式不对order@JordanMiguel最初,无论何时出现块屏幕,现在都会显示“默认内容”,如果我解释正确,这就是您的问题所在。
$(document).ready(function() {
  var $show = $('.show');
  $('.menu a').on('click', function(e) {
    e.preventDefault();
    $show.not(this).stop().hide(450);
    $($(this).attr('href')).stop().toggle(450);
    $('.default').addClass('hidden');

  window.setTimeout(()=>{
        var showDefault = true, divs = $('.show');
     divs.each(function(){
       if($(this).css("display") !=='none'){
            showDefault = false;
            return false;
          }
    });
    if(showDefault){
          $('.default').removeClass('hidden');  
     }
  }, 500)

    });


  })