如何为新注入的html附加jquery事件处理程序?

时间:2012-04-29 11:18:08

标签: jquery event-handling

如果还没有生成HTML,我将如何使用.on()? jQuery页面显示

如果将新HTML注入页面,请在将新HTML放入页面后选择元素并附加事件处理程序。

但我不确定该怎么做。有没有办法“重新加载”事件处理程序?

所以,如果我有

$(document).ready(function(){
    $('.test').on('click', function(){
        var id = $(this).attr('id');
        console.log("clicked" + id);
    });
generatePage();
});

其中generatePage()使用.test创建了一堆div,我将如何重新绑定.on()

我知道有类似的问题已被提出,但我在快速搜索后找不到我想要的东西。

1 个答案:

答案 0 :(得分:20)

使用.on,如下例所示。可以假设body-tag始终可用,因此将事件处理程序附加到body并将事件委托给选择器是安全的,在本例中为 .test

$(document).ready(function(){
    $('body').on('click', '.test', function(){ // Make your changes here
        var id = $(this).attr('id');
        console.log("clicked" + id);
    });

    generatePage();
});

如果 generatePage()也生成html,则head和body标签会使用文档作为您的选择器。

$(document).ready(function(){
    $(document).on('click', '.test', function(){ // Make your changes here
        var id = $(this).attr('id');
        console.log("clicked" + id);
    });

    generatePage();
});

根据jquery documentation .on接受以下参数:

.on( events [, selector] [, data], handler(eventObject) )

包括选择器的内容如下:

  

提供选择器时,事件处理程序称为   授权。直接在事件发生时不会调用处理程序   绑定元素,但仅适用于后代(内部元素)   匹配选择器。 jQuery从事件目标起泡事件   到附加处理程序的元素(即最里面的)   最外面的元素)并为其中的任何元素运行处理程序   匹配选择器的路径。