2016-04-07 26 views
1

我在网站上工作,这里是链接文件:/// D:/fahim/HTML/menu/index.html。如果您点击菜单,则会在其自己的“X”按钮上关闭,但我希望通过在菜单外单击来关闭它。这是主页上使用的JavaScript。关闭任何地方的菜单点击

<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>

而这已列为popup_view.js文件服务器上

(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; 
 
})();

请帮助,因为我已经试过很多代码的代码除了这些,但他们不工作

+0

'$(文件)。在( '点击',HIDE_IT)'和停止事件传播史! – Rayon

+0

我在JavaScript中有点弱,你能告诉我把它放在哪里,我的意思是我必须修改并将此代码放入当前的JavaScript中,否则我必须单独放置它? – fahim

回答

1

$(document).on('click', function(e){ //your close function e.stopPropagation(); } 把这些代码在任何地方你$(document).ready( ...块