【问题标题】:Empty Class Definition Trap?空类定义陷阱?
【发布时间】:2012-10-30 10:00:09
【问题描述】:

每隔一段时间,我都会定义一个空的 CSS 类,例如

.empty{}

使我能够在 jQuery 中轻松地操作整个 DOM 元素序列。从我目前所见,所有主要浏览器都允许我侥幸逃脱。但是,我想知道...是否有任何 W3C 指南可能意味着有一天浏览器会删除/忽略此类空类声明?我已经扫描了,哦,太干了,W3C 文档,但找不到与该主题非常相关的任何内容。

【问题讨论】:

  • "我定义了一个空的 CSS 类...使我能够在 jQuery 中轻松地操作整个 DOM 元素序列"这是如何工作的?
  • 为什么首先需要定义 CSS?它与 jQuery 无关。
  • 我不时做的事情类似于 $.each($('.myemptyclass'),function(ndx,elem){...})
  • 那你就不用在CSS中声明了...
  • 这个问题是基于一个误解。没有“CSS 类”。类由 HTML class 属性(或 DOM 上的相应 JavaScript 操作)定义。 CSS 可以像其他人一样使用它们。 jQuery 表示法.empty 与 CSS 选择器具有相同的格式,但它不需要任何 CSS 定义或声明。

标签: css class optimization


【解决方案1】:

据我了解,您只需将此类用作挂钩即可通过 jQuery 获取所需的元素。 没有错,将永远有效(或直到僵尸启示录)。

浏览器永远不会启动,只会删除任何完全有效的元素。

我很勇敢地说“从不”:-D

但是对于完全没有属性的类,不需要 CSS 声明。 但它也不痛。

【讨论】:

  • 谢谢。使用它的原因是这样的:假设您有 n 个元素都使用相同的类,并且您需要通过 jQuery 操作这些 n 个元素的子集 m。我将一个空的类声明加入到类的组合中来完成这项工作。就像我说的那样,它可以工作......并且会一直工作,直到一些聪明的裤子浏览器决定空类声明是无用的(除了我之外,它对所有人都是无用的)并将其剥离。我从未见过这种情况发生,所以我想知道……有一天会发生吗?
  • @DroidOS:是什么让你认为你需要一个 CSS 规则来处理 HTML DOM 的一部分?
  • Ummm... 我将 CSS 规则加入到 m 子集中(请参阅上面的评论),因此我可以通过 jQuery 快速获取它。听起来您是在暗示有一种更聪明的方法可以快速获取该 m 子集?
  • 让我举一个更具体的例子。我有一个 jQuery Mobile 页面,其中包含 4 个包含 iframe 的弹出窗口。这四个弹出窗口中有 3 个包含地图,第四个包含视频。我需要操作弹出窗口中的 iframe 以确保它们在所有浏览器中都能正常工作 - 请参阅此处 jquerymobile.com/demos/1.2.0-alpha.1/docs/pages/popup/…。只是,地图弹出窗口和视频弹出窗口的操作不同......
  • 这将完全按照您的方式工作。将来也会如此。但是,正如多次提到的,您的 CSS 规则绝对没用。浏览器不会放弃它,但你可以。它不会改变任何东西。只要你的 HTML 中的 class 属性有这个类,你就可以通过 Javascript 过滤它。
【解决方案2】:

您可以在 jQuery 代码中随意使用类名。 jQuery 不要求为您在代码中使用的每个类名定义相应的样式。

例如:如果您使用名为 selected 的类来识别所有选定的元素,则您的 css 中不需要有 .selected {} 定义。

【讨论】:

  • 谢谢,但我不认为你完全理解(我的错,我敢肯定)我在做什么。看看下面 user1207449 怎么说。
  • 问题是因为你的类定义是空的,即使有一天浏览器决定去掉它也没关系。重要的是 jQuery 不关心特定类的样式定义是否存在。使用不存在的类的 JS 代码将继续正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-26
  • 1970-01-01
  • 2010-10-03
相关资源
最近更新 更多