2013-11-01 71 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); 
相关问题