2013-03-01 106 views
0

最近開始使用jQuery Mobile開發,我對事件檢測的行爲有些迷惑。在標準的jQuery中,我總是可以使用jQuery Mobile事件處理

$("#someId").on("click",doSomething()); 

並且這可行。

$(document).on("click","#someId",doSomething()); 

沒有任何人有任何想法,爲什麼是這樣的話:不過,我已經使用jQuery移動,我要在事件處理整個文檔綁定以下列方式發現了什麼? jQuery Mobile是否以與jQuery不同的方式處理事件?

回答

0

標準的jQuery綁定工作 - 即,當你與$("#someId").on("click",doSomething());代碼加載你的頁面,它會尋找與someId識別器元素和doSomething()回調綁定到它。但對於jQuery Mobile,當您加載頁面時,某些元素不存在。相反,這些元素是通過AJAX下載的,因此,您在頁面加載時所做的綁定無法捕獲這些元素。這就是爲什麼使用jQuery Mobile,您通常會使用委託事件綁定(在jQuery的舊版本中稱爲live綁定),即使稍後添加到DOM中的元素也可以工作。 Reference

0

jQuery mobile多次使用ajax進行導航,所以元素並不總是存在於DOM中。

這就是爲什麼人們使用委託事件進行綁定。當你給他們打電話

+0

如果因爲使用ajax導航而導致元素不存在,那麼這樣做是有道理的,但我仍然覺得奇怪的是jQuery手機不支持直接事件綁定。感謝您的回答,雖然:) – danvdende 2013-03-01 12:50:22