代码之家  ›  专栏  ›  技术社区  ›  Jason

为什么.live()不能处理我的自定义事件,但是.bind()会?

  •  0
  • Jason  · 技术社区  · 14 年前

    我认为这是个错误,但从1.4.2开始, .live() 应该支持自定义事件。下面是一个快速的小演示: http://jsbin.com/erofi/edit

    是个错误,还是我的触发器有问题?

    2 回复  |  直到 13 年前
        1
  •  2
  •   bobince    14 年前

    .live() 必须在选择器上使用。在事件时检查事件目标元素是否与选择器字符串匹配。这一点在医生的警告中有所暗示:

    找要发送到.live()的元素时不完全支持DOM遍历方法。相反,应该始终在选择器之后直接调用.live()方法,如上面的示例所示。

    $(document) 不是选择器。如果你看看 $(document).selector ,这是记住的选择器字符串 live() 用于匹配,得到一个空字符串,因此 LIVER() 不工作。

    因为选择器只匹配元素,所以不能 live -约束 document . 又一次,因为 文件 永远不要改变,没有必要:正常的绑定就可以了。

    (这是不幸的api设计。应该是的 $.live('selector', 'event', function() {}); 国际海事组织 $('selector').live() 不清楚它到底在做什么。当然,当你打电话给 LIVER() 在没有选择器的包装上。)

        2
  •  0
  •   Tim Cooper    13 年前

    我认为你不能将事件委托给“文档”。
    不太确定,但我想 .live() 到目前为止还不会出现泡沫。

    尝试 .bind() .trigger() 到下面的其他元素 document.body