2015-10-24 54 views
0

我可以幫忙嗎?如果變量== true,隱藏元素可見

當我點擊.toggle-menu,我沒躲#overlay-menu#overlay-contact如果他們:visibleovDeskVisible == false

if (ovDeskVisible == false && ovMenuVisible) { 
      $('#overlay-menu').hide(); 
      setTimeout(function() { 
       $('#overlay-menu').removeClass('appears'); 
      }, 300); 
     } 
if (ovDeskVisible == false && ovContactVisible) { 
      $('#overlay-contact').hide(); 
      setTimeout(function() { 
       $('#overlay-contact').removeClass('appears'); 
      }, 300); 
     } 

這裏我的功能:

function toggle_nav_desktop() { 
    var ovDeskVisible = false; 
    var ovMenuVisible = $('#overlay-menu').is(':visible'); 
    var ovContactVisible = $('#overlay-contact').is(':visible'); 

    $('.toggle-menu, .toggle-contact').click(function(e) { 
     e.preventDefault(); 
     ovDeskVisible = !ovDeskVisible; 

     if ($('html').attr('lang') == 'fr-FR') { 
      $('.toggle-menu h4').text($('.toggle-menu h4').text() == 'Menu' ? 'Fermer' : 'Menu'); 
     } else { 
      $('.toggle-menu h4').text($('.toggle-menu h4').text() == 'Menu' ? 'Close' : 'Menu'); 
     } 

     if (ovDeskVisible == true) { 
      $('.icon-menu').addClass('is-opened').removeClass('is-closed'); 
      $('html').addClass('stop-scrolling'); 
      $('.circle').addClass('open appears'); 
     } 
     if (ovDeskVisible == false) { 
      $('.icon-menu').addClass('is-closed').removeClass('is-opened'); 
      $('html').removeClass('stop-scrolling'); 
      $('.circle').removeClass('open appears'); 
     } 
    }); 

    $('.toggle-menu').click(function(e) { 
     e.preventDefault(); 

     if (ovDeskVisible == true) { 
      $('#overlay-menu').show(); 
      setTimeout(function() { 
       $('#overlay-menu').addClass('appears'); 
      }, 300); 
     } 
     if (ovDeskVisible == false && ovMenuVisible) { 
      $('#overlay-menu').hide(); 
      setTimeout(function() { 
       $('#overlay-menu').removeClass('appears'); 
      }, 300); 
     } 
     if (ovDeskVisible == false && ovContactVisible) { 
      $('#overlay-contact').hide(); 
      setTimeout(function() { 
       $('#overlay-contact').removeClass('appears'); 
      }, 300); 
     } 
    }); 

    $('.toggle-contact').click(function(e) { 
     e.preventDefault(); 

     if (ovDeskVisible == true) { 
      $('#overlay-contact').show(); 
      setTimeout(function() { 
       $('#overlay-contact').addClass('appears'); 
      }, 300); 
     } 
    }); 
} 

當我點擊.toggle-menu,如何隱藏#overlay-menu#overlay-contact如果它們是:visibleovDeskVisible == false

+0

看起來你必須更明確地定義你的問題,它是什麼,你想要什麼不按預期工作。你是否要求更好的模塊化方式來組織你的代碼?請最後提供一個明確的問題,例如「是否有辦法......」或「我該怎麼做......」。 –

+0

編輯您的問題並將該信息作爲問題的一部分。此外,請嘗試console.log輸出該變量的值,查看您獲得的內容並將其作爲附加信息發佈。如果變量ovDeskVisible的值未被捕獲或使用,請在您的問題中提及您要求知道原因。 –

回答

0

不知道這是否會幫助,但嘗試將您的點擊事件從$('.toggle-contact').click(function(e){}更改爲$('.toggle-contact').on('click', function(e){}。 做了一次,解決了我的問題。它值得一試。

+0

這些是等同的。唯一的區別是'.on()'允許你使用'.off()' – DoubleA

0

我看不到你的其他代碼顯然,但它看起來像你的腳本應該工作。您準備好了文檔的初始化toggle_nav_desktop()嗎?

如果沒有,你可以添加以下:

$(document).ready(function() { 
    toggle_nav_desktop(); 
}); 

如果這沒有幫助,您可以創建你的HTML和一切JSfiddle,並分享鏈接?

順便說一句,您可以通過使用不(!)運算符顯著簡化您的報表,並else聲明:

if (ovDeskVisible) { 
    //ovDeskVisible == true 
} 
else { 
    //ovDeskVisible == false 
} 

if (!ovDeskVisible && ovMenuVisible) { 
    //ovDeskVisible == false 
    //ovMenuVisible == true 
} 
else { 
    //ovDeskVisible == true 
    //ovMenuVisible == false 
} 
相關問題