为什么.live()不能使用我的自定义事件,但.bind()会吗?

时间:2010-04-27 08:05:52

标签: jquery triggers live

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

这是一个错误,还是我的触发器出错?

2 个答案:

答案 0 :(得分:2)

必须在选择器上使用

.live()。在事件时检查事件目标元素是否与选择器字符串匹配。这在文档'警告'中暗示:

  

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

$(document)不是选择器。如果查看$(document).selector,即live()用于匹配的记忆选择器字符串,则会得到一个空字符串,因此live()无法正常工作。

由于选择器只匹配元素,因此您不能live - 绑定document。再说一遍,因为document永远不会改变,所以没有必要:正常的绑定就可以了。

(这是一个不幸的API设计。应该是$.live('selector', 'event', function() {}); IMO。$('selector').live()不清楚它实际上在做什么。当你拨打live()时肯定会出错在没有选择器的包装器上。)

答案 1 :(得分:0)

我认为你不能将事件委托给'文件' 不完全确定,但我认为.live()到目前为止不会起泡。

尝试.bind().trigger()document.body

下的其他元素