12

.on()如果尚未生成 HTML,我将如何使用?jQuery页面说

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

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

所以如果我有

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

generatePage() 在哪里创建了一堆 div .test,我将如何重新绑定.on()

我知道有人问过类似的问题,但在快速搜索后我没有找到我想要的东西。

4

1 回答 1

22

使用 .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作为你的选择器。

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

    generatePage();
});

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

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

包括选择器描述如下:

当提供选择器时,事件处理程序被称为委托。当事件直接发生在绑定元素上时,不会调用处理程序,而只会调用与选择器匹配的后代(内部元素)。jQuery 将事件从事件目标冒泡到附加处理程序的元素(即,从最里面到最外面的元素),并为沿着该路径匹配选择器的任何元素运行处理程序。

于 2012-04-29T11:26:12.317 回答