最近我发现自己经常使用 jQuery 和 JavaScript,经常做与使用 CSS 之前相同的事情。
例如,我使用 JavaScript/jQuery 替换表格行的颜色或创建按钮和链接悬停效果。这是可以接受的吗?或者我应该继续使用 CSS 来处理这些事情?
所以真正的问题是:当我使用过多的 jQuery 时?当我越线时,我如何理解?
最近我发现自己经常使用 jQuery 和 JavaScript,经常做与使用 CSS 之前相同的事情。
例如,我使用 JavaScript/jQuery 替换表格行的颜色或创建按钮和链接悬停效果。这是可以接受的吗?或者我应该继续使用 CSS 来处理这些事情?
所以真正的问题是:当我使用过多的 jQuery 时?当我越线时,我如何理解?
如果您使用jQuery 来完成无需 jQuery 即可轻松完成的事情,那么您就越界了。jQuery 的目的是让生活更轻松,但不应以牺牲兼容性或可用性为代价。
jQuery 绝对不应该被用作 CSS 的替代品——想想禁用 JavaScript 的用户。
我知道这张图片被过度使用了,但有人不得不把它扔在这里:
我不认为这里有一条“线”,我认为有一些简单的事情和一些灰色区域,你必须平衡你想要的东西。先进的功能,性能,兼容性,认为这些都是一个三角形,这是很难做到的所有3尽可能地在同一时间。
如果CSS可以做到,当然在CSS中做到。如果它不能在 CSS 中完成,请使用 jQuery,但不要在不需要开销的地方使用 jQuery,例如$(this).attr("id")
通常可以this.id
,很多东西都可以在 DOM 上严格使用并且仍然以跨浏览器的方式使用。
你什么时候用得太多?当不需要它时,有时您需要 jQuery 用于跨浏览器的 CCS3 选择器,有时您使用已经可用的 CSS 选择器将它放在样式表中。还有一百个其他例子,但如果你可以在没有它的情况下以跨浏览器干净的方式获得,那么就没有必要了,像褪色这样的事情不是微不足道的。如果您根本需要包含 jQuery,那么.fadeIn()
一旦拥有就没有理由不使用(代码已包含,为什么要复制它?)
正如这里的评论中所说,您的网站应该提供所有基本功能而无需 javascript,这通常不是问题,例如捕获点击并通过 AJAX 加载内容......如果您不捕获它,他们会重新加载整个页面,这是标准行为的简单回退。然而,所有的“花里胡哨”?这是肯定的,但我认为您不应该向后弯曲以提供没有 JavaScript 的所有功能。用户关闭它,他们没有得到花哨的东西,那很好……以 SO 为例,禁用 javascript 禁用了许多非必要功能,您可以浏览得很好,但是评论,投票,主要行动是'
如果您在浏览器上关闭了 java 脚本,并且您的站点/应用程序在没有它的情况下无法运行或无法正常运行,那么您就有问题了。
JS 很棒,但它永远不应该阻止用户使用您构建的东西,如果它被禁用。
如果它很容易在 CSS 中实现,那么放弃 jQuery 并在 CSS 中实现。这样您就不必依赖 javascript 执行来获得应用程序的外观/感觉。
如果你可以设置一个类属性而不是很多样式属性,那么你使用了太多的 jQuery。例如:
/** Select 400 rows and change the background colour **/
$('#table tr').css('backgroundColor', 'blue');
代替:
/** jQuery **/
$('#table').addClass('blueRows');
/** CSS **/
#table tr.blueRows {
background-color: blue;
}
为了避免 jQuery 样式,您还可以为主体设置一个类,以便在启用 Javascript 的浏览器中使用 CSS 更容易设置样式:
/** jQuery **/
$(document).addClass('JS-enabled');
/** CSS **/
body #table tr{
background: #FFF;
}
body.JS-enabled #table tr {
background: blue;
}