2010-04-27 40 views

回答

2

.live()必須在選擇器被使用。在事件時檢查事件目標元素是否匹配選擇器字符串。這在文檔'警告'中暗示:

找不到要發送到.live()的元素的DOM遍歷方法。相反,應該總是在選擇器之後直接調用.live()方法,如上例所示。

$(document)不是選擇器。如果你看一下$(document).selector,這是記得選擇字符串live()用來匹配,你會得到一個空字符串,因此live()不工作。

由於選擇器僅匹配元素,因此不能與document匹配live。再次,由於document永不改變,所以不需要:正常綁定就可以。

(這是不幸的API設計,這應該是$.live('selector', 'event', function() {}); IMO。$('selector').live()使得它實際上做什麼不清楚,而且肯定還有應該是一個錯誤,當您在一個包裝調用live()沒有選擇。)

+0

這就是爲什麼.delegate()被引入,工作「更好」並使事情更加清晰的原因 – jAndy 2010-04-27 11:18:10

+0

感謝您的明確回答 – Jason 2010-04-27 16:23:34

0

我不認爲你可以將事件委託給'文檔'。
不完全確定,但我認爲.live()到目前爲止不會起泡。

嘗試.bind().trigger()對於其它元件下document.body

相關問題