【问题标题】:jQuery functions not working after using $(document).click使用 $(document).click 后 jQuery 函数不起作用
【发布时间】:2015-11-23 18:37:39
【问题描述】:

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

$(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 外部之前一切正常。为什么?

编辑:添加信息

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

【问题讨论】:

  • 您检查控制台是否有错误?
  • 你能在 JSFiddle 重现这个问题吗?
  • 有点复杂:此脚本可与 AJAX 和外部编辑器一起使用。我对我的问题进行了编辑。
  • 你能给jsfiddle提供复杂的样本吗?

标签: javascript jquery events document


【解决方案1】:

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

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

【讨论】:

  • 请检查小提琴
【解决方案2】:
关闭括号

$(文档).ready(函数(){
  var popbox = '#popbox';

  $(文档).click(函数(事件){
      if(!$(event.target).closest(popbox).length && !$(event.target).hasClass('popper')){
          if($(popbox).is(":visible")){
              $(popbox).hide();
          }
      });**//这里没有关闭barc。**

  });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多