JavaScript使用数百个闭包或一个函数调用

我有一个数据网页,里面可能有几千个TD.一些TD将需要使用TD的内容或部分内容的绑定onclick事件.

我正在使用jQuery添加onclick闭包,如下所示:

$(".date").click(function() {
    var d = this.html();
    doSomething(this,d,otherparams);
}

这有效吗?似乎我的页面将包含几百个或几千个几乎相同的闭包.将doSomething调用放在其他地方会不会更好.

解决方法

事实上,这是非常低效的.甚至更多,因为您可以使用事件委派轻松解决它.这样做,将只使用一个事件处理程序方法而不是“数千”.

$('table').delegate('td.date','click',function( event ) {
    var d = $(this).html();
    doSomething(this,otherparams);
});

您只需要调用此构造一次(在任何循环之外).它会将click事件处理程序绑定到上面示例中的所有表(例如,您应该更精确地使用id).由于大多数浏览器事件确实“冒泡”了DOM树,因此任何点击都发生在< td>中.元素最终会到达< table>并在那里处理.

参考:.delegate()

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...