使用$(document)后jQuery函数不起作用.单击

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

本文关键字:jQuery 函数 不起作用 单击 document 使用      更新时间:2023-09-26

第一次使用此函数后,所有函数都停止工作:

$(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外之前,一切都很好。为什么?

编辑:添加信息

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

我想您的问题是在函数之外定义popbox。你可以试试这个。它对我有效。

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

关闭括号$(document).ready(function){var popbox='#popbox';$(文档).click(函数(事件){if(!$(event.target)最接近(popbox).length&&$(event.target).hasClass('popper')){if($(popbox).is(":可见")){$(popbox).hide();}})**//这里的结束栏不见了**});