jQuery 使用 $(document).click 后功能不起作用

jQuery functions not working after using $(document).click

我第一次使用这个功能后,所有功能都停止工作了:

$(document).ready(function(){
  var popbox = '#popbox';

  $(document).click(function(event){
      if(!$(event.target).closest(popbox).length && !$(event.target).hasClass('popper')){
          if($(popbox).is(":visible")){
              $(popbox).hide();
          }
      }
  });

例如

  $('#ajax').on('click', 'span.popper', function(){
      $('#ajax').off('mouseenter mouseleave mousemove', 'span.popper');
  })
  .on('mouseenter', 'span.popper', popperMouseenter)
  .on('mouseleave', 'span.popper', popperMouseleave)
  .on('mousemove', 'span.popper', function(e){
      popperMousemove(e);   
  });
});

不再有效。但在点击#popbox 外部之前,一切正常。为什么?

编辑:添加信息

当鼠标进入一个跨度时,出现 div #popbox (.show()) 调用 ajax 数据。 如果用户点击它,这个 div 就会成立。 如果用户在其外部单击,我希望 #popbox.hide():这是由 $(document).click 函数完成的。 但是当重新进入 #popbox 时,如果用户在外部单击调用 $(document).click 函数,则不会显示任何内容,也不会调用 ajax。否则一切正常。

我猜你的问题是你在函数外定义了弹出框。 你可以试试这个。它对我有用。

$(document).click(function(e) {
    var popbox = $('#popbox');

    if (!popbox.is(e.target) && popbox.has(e.target).length === 0) {
        if ($(popbox).is(":visible")) {
            popbox.hide();
        }
    }
});

jsFiddle

Close the bracket

$(document).ready(function(){
  var popbox = '#popbox';

  $(document).click(function(event){
      if(!$(event.target).closest(popbox).length && !$(event.target).hasClass('popper')){
          if($(popbox).is(":visible")){
              $(popbox).hide();
          }
      });**//Here closing barc was missing.**

  });