2011-10-04 16 views
0

是否有任何理由为什么有人会选择使用CSS中的第n个函数,而不是通过jQuery来应用它,它与IE更兼容。使用Nth - CSS VS Jquery

它应该只在jQuery中完成开始,从未在样式表中使用?

我希望这是有道理的,有人可以帮忙。

干杯

+0

感谢大家提出您的意见,我们非常感谢。我想在将来我会使用CSS选项并在使用jQuery之前测试浏览器是什么。 – Frank

回答

0

这些操作的CSS更快。简而言之,它只是被解析并添加到元素中,但是如果你使用jQuery来做这件事,那么就有额外的JS被解析,执行,一些循环,函数调用......并不是说小表上有明显的时间差异,但仍然。

它是的方式较小,以使用CSS。如果你真的需要支持IE浏览器,你可以随时检查浏览器是否是IE浏览器(我认为jq支持这个功能?),然后回退到js。 (这消除了我的上述点,但它仍然更好地使用CSS。)

3

不是每个人都使用自己的浏览器并支持Javascript。此外,通过Javascript应用样式比CSS裁定更慢,因为它需要脚本才能运行以应用样式。

也就是说,使用jQuery为不支持它的浏览器提供n-child兼容性可能是个好主意。

1

你现在使用jQuery/javascript的原因是因为并非所有浏览器都支持nth css选择器。

例如,对于:nth-child ...没有IE8 < =支持:

http://reference.sitepoint.com/css/pseudoclass-nthchild

不过,我将它添加到CSS以供将来使用,并摆脱了脚本,一旦某浏览器数量在船上。

1

如果您根本不在乎与旧版IE的兼容性,那么只能在您的CSS中使用:nth-child

许多网站根本不需要在旧版本的IE工作完美100%,尤其是当你考虑:nth-child通常用于眼睛糖果如zebra striping这并不重要。尽管速度差异并不是很大:在不支持:nth-child的浏览器中,Sizzle必须模拟它(慢),并且没有办法做到这一点。在支持:nth-child的浏览器中,它直接进入querySelectorAll,速度非常快。

Selectivizr是另一种选择 - 它只运行在旧版本的IE中,并且不需要手动编写实际的jQuery代码($('..:nth-child(2n)').addClass(..);),所以在开发时,所有必须编写的代码都是CSS版。

0

我可能会同时使用 - 通过CSS规则(首选方式),并通过jQuery(有选择性地用于非兼容浏览器)。希望随着标准合规性的提高,脚本解决方案将不再需要。