我有一些我为我的工作继承的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类的所有图像元素,因此不会取消注册并重新注册在每次更新时注册。
感谢您提供的任何信息。
答案 0 :(得分:10)
你可以试试这个:
$('body').on('click','.classElem',elm1funct)
.on('click','.classElem2',elm2funct)
.on('click','.classElem3', elm3funct);
委派事件的优势在于它们可以处理来自的事件 稍后添加到文档中的后代元素。通过 选择一个保证在当时存在的元素 委托事件处理程序附加,您可以使用委托事件 避免频繁附加和删除事件处理程序。
答案 1 :(得分:8)
正如@crush所提到的,使用事件委托方法来避免解除绑定和重新绑定事件:
$(document).on('click', '.classElem', elm1funct);