Javascript事件监听器刷新

Mic*_*nio 8 html javascript css jquery

我有一些我为我的工作继承的javascript.在这个javascript中,我们有一个不断更新的侧栏(每1到10分钟左右).在脚本中,我们从服务器解析并处理AJAX,然后我们调用一个有趣的函数.

function renewClicks(){
    $('.classElem').unbind('click'); 
    $('.classElem2').unbind('click');
    $('.classElem3').unbind('click'); 

    $('.classElem').click(elm1funct); 
    $('.classElem2').clikc(elm2funct);
    $('.classElem3').click(elm3funct);  
}
Run Code Online (Sandbox Code Playgroud)

其中.classElem是一个css类选择器,它附加到添加到页面的每个图像.elmfunct是为处理点击而编写的函数.这将在每次更新时运行(取消授权有效的已添加元素,然后重新添加所有元素).我想知道是否有一种方法可以在DOM中的body元素上附加一个监听器,这样就可以处理添加到页面并继承css类的所有图像元素,因此不会取消注册并重新注册在每次更新时注册.

感谢您提供的任何信息.

Dar*_*jax 11

你可以试试这个:

$('body').on('click','.classElem',elm1funct)
         .on('click','.classElem2',elm2funct)
         .on('click','.classElem3', elm3funct);
Run Code Online (Sandbox Code Playgroud)

来自jQuery的文档:

委托事件的优点是,它们可以处理来自稍后添加到文档的后代元素的事件.通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委派事件来避免频繁附加和删除事件处理程序的需要.


Joh*_*han 8

正如@crush所提到的,使用事件委托方法来避免解除绑定和重新绑定事件:

$(document).on('click', '.classElem', elm1funct);
Run Code Online (Sandbox Code Playgroud)