2013-11-01 136 views
1

我很肯定答案並不難,但我不確定在哪裏尋找它。jquery在創建div後附加一個點擊處理程序

我想附加一個jQuery事件處理程序,當div被創建。例如:

$('#somediv').click(function(){ 
    //do something 
}); 

但是... #somediv不存在。由於一些AJAX加載它會。所以我需要的是類似的東西。

$('#somediv').whenImcreated(function(){ 
    $(this).click(function(){ 
     //do something 
    }); 
}); 

回答

3

您需要委託的事件:

$(document).on('click', '#somediv', function(){ 
    //do something 
}); 

注意的是,雖然document作爲主要的選擇將工作,以獲得最佳的性能,你應該讓它的#somediv這是存在於DOM最接近的父元素在document.ready

+0

一個良好的開端,但OP問,當它被*創建*,不被點擊時。你是否有一個事件,當div'生命'? – Berto

+0

我建議你閱讀並理解這個問題。雖然OP說他們想知道元素何時被創建,但顯然他們正在試圖在添加到DOM之後附加一個事件處理程序。如果您確實想在創建元素時觸發事件,請使用MutationObserver,如下所示:https://stackoverflow.com/a/19401707/519413 –

2

使用.on()

因爲元素被添加動態。所以你必須使用Event Delegation你不能直接綁定到這些事件。

$(document).on('click', '#somediv', function(){ ... }); 

語法

$(elements).on(events, selector, data, handler); 
相關問題