自动将事件处理程序分配给新元素

时间:2012-04-29 17:26:18

标签: javascript jquery event-handling

说我有一些这样的代码,在$(document).ready()

上调用
$(".someClass").click(function(){
    //do something 
});

稍后我有一些jquery用类someClass创建一个元素。无论如何要从上面自动附加点击,还是我必须再次手动附加?

4 个答案:

答案 0 :(得分:3)

是。这是可能的。

$("body").on("click", ".someClass", function() {
    // ...
});

答案 1 :(得分:3)

使用最新版本的jquery和on

$(document).on('click', '.someClass', function(e){
    //do something 
});
不推荐使用

Live,但无论如何都可以使用它(不推荐)。

$('.someClass').live('click', function(e){
    //do something 
});

答案 2 :(得分:1)

还有live,它还会侦听新元素

$(".someClass").live('click', function(){
    //do something 
});

但是,从jquery 1.7开始,它已被弃用。建议改为使用on

但是为了使用on,您需要一个容器来容纳要绑定处理程序的元素。当然你可以使用bodydocument,但最好使用更具体的元素

$(".someClassContainer").on('click', '.someClass' function(){
        //do something 
    });

答案 3 :(得分:1)

有两种简单的方法可以做到这一点,第一种是使用on()

$(".someClassParentElementPresentInTheDOMonDOMReady").on('click','.someClass',
    function(){
        //do something 
    });

另一种是简单地在创建新元素时分配点击处理程序;我不知道你是怎么做的,但下面是一个例子:

$('#addElement').click(
    function(){
        var newElem = $('<div />',{'class' : 'someClass'}).click(function(){
            // do something }).appendTo('.someClassParentElementPresentInTheDOMonDOMReady');

参考文献: