8

我有一些为我的工作继承的 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 类的所有图像元素都已经被处理,因此不会取消注册和重新在每次更新时注册。

感谢您提供的任何信息。

4

2 回答 2

11

你可以试试这个:

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

来自jQuery 的文档

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

于 2013-07-03T16:13:55.097 回答
10

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

$(document).on('click', '.classElem', elm1funct);
于 2013-07-03T16:12:21.353 回答