“停止将 CSS 选择器用于非 CSS 领域”

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

我前几天看到 Nicole Dominguez 在推特上发了这条消息

我没有参加这个会议,所以对背景了解不多。通常情况下,我会认为仅仅根据 查看两张脱离上下文幻灯片 就对某个主题发表意见是错误的,但我只是出于兴趣并为了继续讨论而发表意见。

这个想法似乎是,如果您需要使用 JavaScript 选择 DOM 中的某个元素,请不要使用与 CSS 中相同的选择器。

所以,如果您有…

<article class="article">
</article>

…并且出于某种原因需要为此文章应用事件监听器,那么请不要使用…

$(".article")

(或 querySelector 或其他任何方法,我假设。)

相反,应用一个仅供 JavaScript 作为目标的属性,例如…

<article class="article" data-hoverable>
</article>

…并像这样定位它…

$("[data-hoverable]")

这个想法是,您可以将任务分离。类负责样式,而数据属性负责 JavaScript 操作。两者都可以更改,而不会相互影响。

在我看来,这似乎是合理的。

而且似乎这里有很多可以讨论的地方。我想性能也是其中之一,但这可能是最不有趣的事情,因为选择器如今通常都非常快。我们可以通过讨论以下内容来继续对话:

  • 使用什么命名约定?
  • 是否应该为事件命名?
  • 如果需要出于多种原因多次选择它怎么办?
  • 您能否或是否应该使用 ID?
  • 如果可以,是否值得避免 DOM 选择?
  • 还有哪些其他细微差别是本次讨论的一部分?

我看到 Michael Scharnagl 对 ID、类和数据属性的使用有一些自己的想法,这可能有助于稍微构建一下框架。