【问题标题】:Bind js event to document except 1 element将 js 事件绑定到文档,除了 1 个元素
【发布时间】:2011-10-06 04:22:15
【问题描述】:

基本上,我有一个弹出窗口,并且希望在外部任何地方单击它时将其隐藏,但只有一个元素(这是另一个弹出窗口,比如说 div#AnotherPopup)。然后我点击#AnotherPopup,它不应该隐藏原来的那个。它现在可以了,因为我有这个:

  $(document).bind('click', methods.hide);

除了#AnotherPopup 之外,如何将它绑定到文档? :)

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    你不能,但你可以检查 methods.hide 内部是否目标元素是 #AnotherPopup 并在执行任何操作之前立即退出函数。

    【讨论】:

      【解决方案2】:

      #AnotherPopup 的点击处理程序是阻止文档获得点击事件。

      $(document).bind("click", function () {
         alert(this.innerHTML) 
      });
      $('#AnotherPopup').click(function () {return false;});
      

      Example

      【讨论】:

      • 所以.. 您实际上是在将事件处理程序绑定到除一个之外的所有 DOM 元素吗?这不是一个好主意。
      • @erlando,这就是 OP 要求的
      • 但这根本不是正确的做法。在这种情况下,绑定到文档然后检查#AnotherPopup 会好得多。绑定到 DOM 中的 /every/ 元素是不必要的,而且会占用大量资源。
      • @erlando,你现在怎么看?
      【解决方案3】:

      通过使用 unbind 你可以做到这一点:

      $(document).bind('click',methods.hide);
      $('#AnotherPopup').unbind('click',methods.hide);
      

      阅读更多关于unbind here

      【讨论】:

      • 我认为这行不通。 methods.hide 实际上并没有绑定到#AnotherPopup,它绑定到文档。因此,没有什么可以解绑...
      猜你喜欢
      • 1970-01-01
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多