我有一个table ,假如有500行,30列,当我用以下语句进行改变表格的单元格的背景颜色时,发现当我单击td时,要经过2三秒才能使td的背景颜色变红色。这效率太低了,不知道要编写js代码,才能使单击td让他的背景颜色变红色的时间不经过0.5秒。$('table').click(function (e) {
if (e.target.nodeName == 'TD') {
$(e.target).css('background', 'red')}
}

解决方案 »

  1.   

    $('table td').click(function (e) {
    $(this).css('background', 'red');
    })
    这样会不会好点
      

  2.   

    这个还真不行,,,我用纯JS试了下,,,1W5个格子,,,,效率高不到哪去
      

  3.   

    500行..数据库分页在怎么优化500行30列也吃不消~
    $('table td').click(function(){
          $(this).css({'background', 'red'});
    });
      

  4.   

    其实我的真实目的不是要使td的背景颜色变红色,而是当我单击td时,自动生成input,如果在2秒钟之后生成,那可就太慢了。
      

  5.   

    就是有这么一个实际业务,所有必须克服500行30列的情况。我是要模仿excel的。
      

  6.   

    再问下了解的人吧,jquery 应该还不至于这样的效率.
    如果说是模仿excel的话,对table的单行显色还要考虑多种情况,我做过的类似的操作还有:标识,锁定,点击,定位(搜索td中出现的关键字然后给该行标色,移动,这些情况都要给TR标上不同的颜色,而且要在翻页或上下方向键或删除修改移动时不同状态下颜色要保持不变,这个用jquery 就很为难了
      

  7.   


    恩,我现在也是在做跟你类似的操作。就是感觉jquery效率不是很高。
      

  8.   

    你写的这个代码并不需要遍历整个表格,跟jQuery的效率无关。我测试了一下,在IE(IE8)下才会出现你说的这种延时,在Chrome、Safari下都是正常的。解决办法:
    1.限制客户端使用非IE浏览器;
    2.使用AJAX动态刷新数据,(拖动滚动条时动态获取部分数据、更新文档树)。
      

  9.   

    像zimbra邮件一样,通过滚动条来加载TR。