【问题标题】:Add and remove class redraw browser?添加和删​​除类重绘浏览器?
【发布时间】:2013-09-27 02:28:56
【问题描述】:

谁能帮我解释一下以下内容:

1)我有一个动态创建的 html 表。它有 30 多列和 100 多行。我已经能够使用箭头按钮在表格的单元格中导航。当我移动到下一个单元格时,我将焦点设置到新单元格并更改单元格的边框。

我应该使用 .addClass('className') 和 .removeClass('className') 还是应该使用 .css('border','1px solid') 来更改单元格的边框。

在浏览器重绘本身方面两者是否相似?一个比另一个更可取吗?

2)如果相反,我单击另一个单元格而不是使用箭头移动到该单元格,我想清除以前的单元格边框。因为我没有对旧单元格的引用,所以我最终不得不清除整个 'table tr' 边框,这可能有点过头了。

基本上,当我单击单元格或箭头指向单元格时,在单元格周围放置边框的最佳实现是什么?以及删除它的最佳方法?我注意到有点滞后,我不知道是否是由于 addClass 和 removeClass 导致浏览器重绘页面。

提前致谢

【问题讨论】:

  • 使用类更易于维护。我的猜测是性能影响来自您选择行的方式,而不是添加/删除类或样式。
  • 您不需要删除所有单元格的边框。您可以定位具有边框的单元格...$("td.className").removeClass("className");

标签: jquery html browser


【解决方案1】:

在浏览器重绘本身方面两者是否相似?

重绘就是重绘,不管是什么原因造成的。

一个比另一个更可取吗?

第一个 - 因为它更好地分离了逻辑和表示。

也许下周你想要一个 2px 的边框,或者一个点的边框,或者添加一个背景颜色——所以你只需更改你的 CSS,并保持脚本逻辑不变。

如果相反,我单击另一个单元格而不是使用箭头移动到该单元格,我想清除以前的单元格边框。因为我没有对旧单元格的引用,所以我最终不得不清除整个 'table tr' 边框,这可能有点过头了。

那么为什么不保留对先前突出显示的单元格的引用...?

【讨论】:

  • 你说第二个更好,但后来解释了为什么第一个更好;)
猜你喜欢
  • 2013-07-27
  • 2014-12-11
  • 2017-06-16
  • 2017-07-26
  • 2017-02-14
  • 2020-06-27
  • 1970-01-01
  • 2013-04-13
  • 2014-10-23
相关资源
最近更新 更多