2013-05-07 64 views
0

有人可以解釋這一點嗎?我的代碼正常工作,現在我使用.delegerate,但我不知道爲什麼我必須使用它。 我有一個「ajaxDiv」類創建ajax元素。當我像這樣使用.live時,我沒有得到警報。我在這個函數之後編寫的所有代碼都不起作用。.delegate作品,.live不。爲什麼?

$(".ajaxDiv").live("click", function(event){ 
    alert('I don\'t work.') 
}); 

但是,當我這樣做,它的工作。

$("body").delegate(".ajaxDiv", "click", function(){ 
    alert('I work like a charm!') 
}); 

謝謝!

回答

0

現場已被棄用jQuery中。

在jQuery 1.7的,所述.live()方法被棄用。使用.on()附加事件處理程序。老版本的jQuery用戶應優先使用.delegate(),而不要使用.live()。 參考:http://api.jquery.com/live/

+0

它折舊不會使它停止工作,但它是刪除會。 – 2013-05-07 17:47:16

+0

這是正確的。TwiNight提供了完整的答案。但是,無論標記爲depricated,都不應再使用。 – 2013-05-07 18:07:16

3

我猜你是使用jQuery 1.9? .live()已刪除。

與此同時,您可以使用Migrate Plugin來恢復.live()或繼續使用.delegate()

然而,最好的向前兼容性,可以考慮使用.on()。簡單地切換第一2個參數的.delegate()

0

.live jQuery中1.9除去。 .delegate尚未刪除。事實上,它不被棄用,但它的使用已被代替.on.delegate documentation)。我建議你使用.on所有綁定,包括事件委託。

相關問題