我有一个表,我显示/隐藏一个完整的列由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>

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


当前回答

当您在JavaScript中使用类名时,它不会查看CSS来查找该类。它直接在HTML代码中查找。

所需要的只是类名在HTML中。不需要在CSS中。

事实上,许多人认为在CSS和Javascript中保持单独的类使用是一个好主意,因为它允许设计师和编码员独立工作,而不会因为使用彼此的类而妨碍彼此。

(注意,上面的段落显然更适用于大型项目,所以如果你是独自工作,不要觉得你必须走这个极端;我提到它是为了说明这两者可以完全分开)

其他回答

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

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

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

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

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

根据HTML5规范:

类属性的值必须是由空格分隔的集合 表示元素所属的各种类的标记。 ... 对于作者可以在其中使用的令牌没有其他限制 类属性,但鼓励作者使用 描述内容的本质,而不是描述的价值 内容的理想表示形式。

此外,在版本4中:

class属性在HTML中有几个角色: 作为样式表选择器(当作者希望分配样式时) 一组元素的信息)。 用于一般用途的加工 用户代理。

您的用例属于第二种场景,这使得它成为使用类属性的合法示例。

当您在HTML中添加类时,类将被定义,因此您的解决方案完全没问题