Javascript事件监听器刷新

时间:2013-07-03 16:07:56

标签: javascript jquery html css

我有一些我为我的工作继承的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);  
}

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

感谢您提供的任何信息。

2 个答案:

答案 0 :(得分:10)

你可以试试这个:

$('body').on('click','.classElem',elm1funct)
         .on('click','.classElem2',elm2funct)
         .on('click','.classElem3', elm3funct);

来自jQuery's docs

  

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

答案 1 :(得分:8)

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

$(document).on('click', '.classElem', elm1funct);