我有一个表,我显示/隐藏一个完整的列由jQuery通过CSS类不存在:

<table>
   <thead>
      <tr>
         <th></th>
         <th class="target"></th>
         <th></th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td></td>
         <td class="target"></td>
         <td></td>
      </tr>
      <tr>
         <td></td>
         <td class="target"></td>
         <td></td>
      </tr>
   </tbody>
</table>

有了这个DOM,我可以在一行通过jQuery: $('.target').css('display','none');

这是完美的工作,但它是有效的使用CSS类没有定义?我应该为它创建一个空类吗?

<style>.target{}</style>

有没有副作用或者有没有更好的方法?


当前回答

使用类来查询元素完全没有问题。我过去常常给这样的类名加上sys-前缀(例如,我将把你的类命名为sys-target),以将它们与用于样式化的类区分开来。这是过去一些微软开发人员使用的惯例。我还注意到越来越多的人使用js-前缀来达到这个目的。

如果你不习惯将类用于样式以外的目的,我建议使用role .js jQuery插件,它允许你使用角色属性来达到相同的目的,所以,你可以将你的标记写为<td role="target">,并使用$("@target")查询它。项目页面有很好的描述和示例。我在大型项目中使用这个插件,因为我真的喜欢只为了样式目的而保留类。

其他回答

你可以使用一个没有样式的类,这是完全有效的HTML。

CSS文件中引用的类并不是类的定义,它是用于样式化目的的选择器规则。

你可以在不使用它的情况下使用CSS类,但我建议如果你只是为JavaScript/jQuery代码添加CSS类,在它前面加上js-YourClassName,这样前端开发人员就不会使用这些类来设置元素的样式。他们应该明白,这些类可以在任何时候被删除。

使用类来查询元素完全没有问题。我过去常常给这样的类名加上sys-前缀(例如,我将把你的类命名为sys-target),以将它们与用于样式化的类区分开来。这是过去一些微软开发人员使用的惯例。我还注意到越来越多的人使用js-前缀来达到这个目的。

如果你不习惯将类用于样式以外的目的,我建议使用role .js jQuery插件,它允许你使用角色属性来达到相同的目的,所以,你可以将你的标记写为<td role="target">,并使用$("@target")查询它。项目页面有很好的描述和示例。我在大型项目中使用这个插件,因为我真的喜欢只为了样式目的而保留类。

如果你在HTML元素上应用了一个类,并且这个类没有在CSS中定义,那么它就没有效果。这是一种常见的做法,就像Aamir afridi说的,如果你只是为了js的目的而使用类,用js-作为前缀是一个很好的做法。

它不仅对类有效,而且对html元素的id属性也有效。

使用没有样式的类不会产生不良影响。的确,CSS的部分用处在于它与标记分离,可以设置或不设置元素/类等的样式。根据需要。

不要认为它们是“CSS类”。把它们看作是“类”,如果需要的话,CSS也会使用它们。