2016-04-07 61 views
1

Web sitesinde çalışıyorum ve burada link dosyası: /// D: /fahim/HTML/menu/index.html. Menüyü kendi "X" düğmesine basarak kapatırsanız, ancak menünün dışına tıklayarak kapatmak istiyorum. Bu, ana sayfada kullanılan javascript.Heryerde bir menüyü kapatmak için tıklayın

<script> 
 
var popupView = new popup(); 
 

 
document.querySelector('#btn_1').addEventListener('click', function() { 
 
popupView.show(document.querySelector('#popup_1')); 
 
}); 
 

 
document.querySelector('#btn_2').addEventListener('click', function() { 
 
popupView.show(document.querySelector('#popup_2'), function() { 
 
\t console.log('show do something'); 
 
}); 
 
}); 
 

 
document.querySelector('#btn_3').addEventListener('click', function() { 
 
popupView.show(document.querySelector('#popup_3'), '', function() { 
 
\t console.log('CLOSE'); 
 
}); 
 
}); 
 

 
</script>
Ve bu i kodlarının çok çalıştılar olarak

(function() { 
 
    var popup = function() { 
 
     function hide(dom, dosomething) { 
 
      if (!dom) { 
 
       console.error('hide function not set dom object'); 
 
       return; 
 
      } 
 
      if (dosomething) { 
 
       dosomething(); 
 
      } 
 
      dom.className += ' ' + 'popup_hide'; 
 
     } 
 
     function show(dom, dosomethingShow, dosomethingClose) { 
 
      if (!dom) { 
 
       console.error('show function not set dom object'); 
 
       return; 
 
      } 
 
      if (dosomethingShow) { 
 
       dosomethingShow(); 
 
      } 
 
      var className = 'popup_hide', 
 
       reg = new RegExp('(^|\\b)' + 
 
        className.split(' ').join('|') + 
 
        '(\\b|$)', 'gi'); 
 
      dom.className = dom.className.replace(reg, '').trim(); 
 
      var nodes = dom.childNodes; 
 
      for (var i = nodes.length - 1; i >= 0; i--) { 
 
       if (nodes[i].className === 'pop_up_close') { 
 
        var close = function (e) { 
 
         if (dosomethingClose) { 
 
          dosomethingClose(); 
 
         } 
 
         dom.className += ' ' + 'popup_hide'; 
 
         nodes[i].removeEventListener('click', close); 
 
        }; 
 
        nodes[i].addEventListener('click', close); 
 
        break; 
 
       } 
 
      } 
 
     } 
 
     this.show = show; 
 
     this.hide = hide; 
 
    }; 
 
    window.popup = popup; 
 
})();

yardım edin sunucuda popup_view.js dosyası olarak takılır koddur Bunların dışında ancak bunlardan olmayanlar

+0

'$ (document) .sistem engellemek ('klik', HIDE_IT)' ve stop-olay-propogation! – Rayon

+0

Javascript'te biraz zayıfım, lütfen nereye koyacağınızı söyler misiniz, yani bu kodu benim mevcut javascript'ime koyup koymalı mıyım yoksa onu ayrı ayrı koymak zorundayım? – fahim

cevap

1

$(document).on('click', function(e){ //your close function e.stopPropagation(); } ... senin $(document).ready( yerde bu kodu koy