2012-06-02 76 views
12

我有一個Jquery Mobile shell頁面,我正在使用Ajax加載表單。表單有一些複選框,我需要綁定。如何在通過Ajax引入的元素上使用Jquery document.on()?

奇怪的是,我可以得到它的工作直接對按鈕設置監聽器,如下:

$('input[name="ohneiln"]').on('change', function() { 
    alert("hello"); 
    }); 

但是,當我試圖監聽設置爲$(document)並委託給checkbox,聽衆永遠火災:

$(document).on('change', 'input[name="ohneiln"]', function() { 
    alert("hello"); 
}); 

問:
什麼是正確的方式來設置一個事件爲「動態」的元素是LO結合通過Ajax使用$(document).on()change事件是不可能的,或者我爲什麼會遇到麻煩?

感謝您的幫助!

+1

你的第二個語法似乎罰款,並應爲動態元素的工作,問題是其他地方可能。 –

+1

工作正常http://jsfiddle.net/7rDDA/ – Esailija

+0

@Esailija - 但你的輸入是在頁面加載時。我的不是,在用戶做了一些事情後,它通過Ajax被拉進來。 – frequent

回答

11

.on()方法的工作方式根據您的使用方式而改變。在第一個示例中,.on()方法的行爲與bind類似,僅適用於已存在的元素。

第二個示例在很多方面的行爲類似於.live()delegate()。並且將適用於稍後添加的元素。

閱讀文檔進行了詳細的解釋http://api.jquery.com/on/

+0

感謝您的鏈接和解釋。猜猜我堅持使用第一個版本。 – frequent

+0

我想你有第一個和第二個例子混在一起。第一個是「直接」,第二個是「委託」。 –

+0

我想你的權利感謝火箭:) – codaniel

相關問題