jQuery 与 CSS 首选或接受的样式最佳实践

jQuery vs CSS Preferred or Accepted Style Best Practices

提问人:Harper 提问时间:10/13/2010 更新时间:10/13/2010 访问量:358

问:

我有以下加载图像:

<img id="loading" src="loading.gif" />

为了在AJAX调用期间显示/隐藏它,我有几种解决方案。例如,我可以通过添加一个对应于 CSS 样式的类来隐藏它:

$('#loading').addClass('hidden');

.hidden { display: none; }

或者,我可以使用 jQuery 和 .在这个特定示例中,后一种方法不那么冗长。.show().hide()

哪些场景可以从“动态”添加 CSS 中受益?我一直在阅读“不显眼的 JavaScript”,它建议使用 jQuery 在 $(document).ready() 中将所有 JS 注入 DOM。

有没有一种最佳实践方法,以类似的方式将CSS和jQuery完全分开?

javascript jquery css unobtrusive-javascript

评论

0赞 Pekka 10/13/2010
也许一个 jQuery / 不显眼的 JS 大师会这么说,但我想说这真的没关系,无论哪种方式都可以(尽管我发现并且比 和 更冗长showhideaddClassremoveClass)
0赞 Marcel Korpel 10/13/2010
"...建议使用 jQuery 将所有 JS 注入 DOM $(document).ready()“ 与您的问题无关:大多数情况下,AJAX 调用是在页面完全加载后进行的(然后是当您想要显示/隐藏加载指示器时)。
0赞 Harper 10/13/2010
@Marcel Korpel:我提到这一点是为了强调该技术如何将 HTML 与 JS 分开,而我问的是是否有将 JS 与 CSS 分离的首选方法——因为执行 addClass() 后,JS 必须了解 CSS。
0赞 Marcel Korpel 10/13/2010
不,这不是真的:当一个元素存在于 DOM 中时,它可以通过 JS 操作,例如,通过设置属性。CSS是否已经加载并不重要。class
0赞 Harper 10/13/2010
我的意思是,当你说.addClass('myclassname')时,你必须知道myclassname在CSS中的样式。

答:

3赞 Gabriele Petrioli 10/13/2010 #1

如果要从服务器端设置初始状态,那么使用类会更简洁,因为这将避免必要的客户端初始化(可能会闪烁内容)。

你通常也会在jquery中使用类选择器,所以玩类总是更容易(至少对我来说),而不是试图弄清楚元素的css中的属性是否被更改了。

最后,它归结为觉得更舒服的工作。