2012-06-27 14 views
1

我無法在其上通過無法使用。點擊()事件上的按鈕

html(). 
$.post('includes/addconnectordetails.php',{connnumb: connno},function(data){ 
    $('#divgeneratecheck').html(data);  
}); 

我加載形式從addconnectordetails.php頁面上的div#加載的按鈕使用點擊()事件divgeneratecheck,窗體正在加載,但我無法在窗體中顯示的按鈕上使用.click()事件。我怎樣才能做到這一點 ?

+0

何時將事件處理程序附加到按鈕?如果在將數據添加到DOM之前執行此操作,除非您委派事件,否則它不會附加。 – jackwanders

+0

如果您正在加載表單,是否爲

回答

4

您需要使用.on,您必須將其附加到您希望參加活動的項目的父項。我用身體,但你的情況可能是#divgeneratecheck

$('body').on('click','SELECTOR',function() { 
    /* Code here */ 
}); 

只是要附加事件到DOM的部分替代選擇。 (如#btn1或.button)

+0

感謝百萬它爲我工作,乾杯.. – Vikas

+0

不客氣 –

4

你將不得不使用on()動態元素:沒有一定的幫助

$('selector').on('click', function() { 
    // your code 
}); 

http://api.jquery.com/on/

+0

非常感謝您的快速響應.. – Vikas

1

jQuery的不能勾動態加載HTML,看看活的(),上()或委託( )在jquery網站內。

+0

感謝您的快速響應.. – Vikas

3

您遇到的問題是由於事件委派。當您嘗試通過click()事件處理程序附加事件偵聽器時,它只會引用最初創建的元素,而不是動態加載的元素。

想象一下創建一張地圖,然後試圖將該地圖用於之前沒有的地圖。由於它最初缺席,你不會知道它存在,因此無法正常引用它。但是,委託事件基本上允許將該位置在創建之後添加到地圖中,然後在被初始化時不被引用。

.on()方法將事件處理程序附加到jQuery對象中元素的當前選定集合 。從jQuery 1.7開始,.on()方法 提供了附加事件處理程序所需的全部功能。有關 幫助轉換舊的jQuery事件方法,請參閱.bind(), .delegate()和.live()。要移除使用.on()綁定的事件,請參閱 .off()。要附加只運行一次一個事件,然後刪除 本身,見。一()

此外:

事件處理程序只綁定到當前選擇的元素;在代碼調用.on()時,頁面上必須存在 。 要確保元素存在並且可以選擇,請在頁面上的HTML標記中的 HTML標記中對元素執行文檔就緒處理程序內的事件 綁定。如果新頁面被注入頁面, 選擇元素並附加事件處理程序,當新的HTML被放置到頁面中時,頁面中的內容爲 。或者,使用委託事件來附加處理程序事件 ,如下所述。

委託事件的優點是它們可以處理來自 後來添加到文檔中的事件的事件。通過 挑選一個在連接了委託事件處理程序時保證存在的元素,可以將委派事件用於 ,從而避免需要經常附加和刪除事件處理程序。例如,這個 元素可能是模型 - 視圖 - 控制器設計中的視圖的容器元素,或者處理程序想要監視文檔中的所有冒泡事件的文檔。 文檔元素在 加載任何其他HTML之前在文檔的頭部中可用,因此在沒有 等待文檔準備就緒的情況下附加事件是安全的。

除了他們來處理後代元素事件的能力 尚未創建,委派事件的另一個優點是當許多元素都必須 監控他們低得多的開銷 潛力。

+0

感謝您分享的知識百萬,它真的幫助我瞭解問題。乾杯.. – Vikas