2016-03-03 101 views
0

我創建了一個非常簡單的彈出窗口/模式框。我想在點擊.openModal按鈕後顯示它,然後點擊.closeModal或屏幕上的任意位置關閉它。問題是我不能定義將顯示如果模態打開(真)或關閉(假)的變量。定義變量時出現「意外變量」錯誤

什麼問題?

<div class="modal"></div> 
    <div class="modalContent"> 
    <span class="closeModal">x</span> 
    </div> 

    <script> 
     var openModal = false; 

     $(".openModal").click(function(){ 
      $(".modal").show(); 
      $(".modalContent").show(); 
      openModal = true; 
     }) 

     $(".closeModal").on('click', function(){ 
      $(".modal").hide(); 
      $(".modalContent").hide(); 
      openModal = false; 
     }) 

     $("body").on('click', function(){ 
     if(openModal){ 
      $(".modal").hide(); 
      $(".modalContent").hide(); 
     } 
     }) 

    </script> 
+6

'var ...'上面的代碼是什麼? –

+0

你可以發佈你的所有代碼嗎? –

+0

此腳本位於主體的底部,因此該行的上方是頁面的其餘部分。上面的第一件事是模式內容div – divHelper11

回答

1

爲變量檢查創建一個函數:

function checkOpen() { 
    if (!openModal) { 
     $(".modal").hide(); 
     $(".modalContent").hide(); 
    } 
} 

然後調用它,只要您修改模式:

$(".openModal").click(function(){ 
    $(".modal").show(); 
    $(".modalContent").show(); 
    openModal = true; 
    checkOpen(); 
}) 
+0

對不起,我錯過了變量名前的'!'。至於標題中的問題,他沒有理由在他的問題中貼上摘錄。 –

1

你可以在.modal使用data-*屬性:

<div class="modal" data-open='false'></div> 

然後在JS更新:

$(".openModal").click(function(){ 
    $(".modal").show(); 
    $(".modalContent").show(); 
    $(".modal").data('open', true); 
}) 

$(".closeModal").on('click', function(){ 
    $(".modal").hide(); 
    $(".modalContent").hide(); 
    $(".modal").data('open', false); 
}) 

$("body").on('click', function(){ 
    if($(".modal").data('open')){ 
     $(".modal").hide(); 
     $(".modalContent").hide(); 
    } 
}) 

希望這有助於。

2

我終於解決了這種方式:

<div class="modal"></div> 
<div class="modalContent"> 
<span class="closeModal">x</span> 
</div> 

      var openModal = false; 

      $("body").on('click','.modal', function(){ 
        if(openModal === true){ 
         $(".modal").hide(); 
         $(".modalContent").hide(); 
        } 
      }); 

      $("body").on('click', '.openModal', function(){ 
       $(".modal").show(); 
       $(".modalContent").show(); 
       openModal = true;  
      }); 

      $('body').on('click',".closeModal", function(){ 
       $(".modal").hide(); 
       $(".modalContent").hide(); 
       openModal = false; 
      }); 

.modal是同時彈出是開放的,它是全屏出現一個灰色的背景,所以點擊它的工作原理一樣的,你可以點擊體。它看起來像身體元素不能被點擊,就像它背後的東西。我不知道