将html类属性用作变量是不好的形式

时间:2015-07-23 14:49:03

标签: javascript jquery html html5

我想知道html类属性是否只应用于样式。将class属性用作变量是否有任何缺点。 W3规范http://www.w3.org/TR/html5/dom.html#classes没有指定这种或那种方式,但是所有示例和训练都指向仅针对多个对象的样式方向。

在我的情况下,我想使用class属性作为与对象数组中的键值匹配的变量。例如,在我的Javascript代码中,我有一个具有多个键/值对的对象。在我的网络应用程序上,我有许多保存按钮。单击保存按钮时,我会获取父类属性值,并将其用作对象的键,以便知道要更改的值。父对象上的class属性没有其他值,只是让我知道要在对象中更改哪个键值对

3 个答案:

答案 0 :(得分:6)

虽然我确定可能以这种方式使用课程,但这肯定不是他们的预期目的。 html具有提供所需功能的数据属性,例如

onClick

然后,您可以获取该值(DOM manipulations,如果您愿意)并将其用作对象/数据结构的键。 Theres a here

答案 1 :(得分:3)

虽然不错,但这也不是最佳做法。

您可以,而不是使用class属性,定义显式数据属性。使用class属性意味着您不能使用多个类(因为这将是在对象中搜索的奇怪键,对吧?)。

例如:

<div class="any classes you like" data-mykey="searchforthiskey">
  <button></button>
</div>

在jQuery中:

$('button').click(function() {
  var key = $(this).closest('div').attr('data-mykey');
});

答案 2 :(得分:2)

从功能角度来看,没有理由不使用class属性来存储有关该元素的信息。您可以像访问数据属性一样轻松地访问类属性。

从标准的角度来看,使用数据属性可能更好。为什么?好吧,如果你是唯一一个在你的前端工作的人,没什么大不了的。如果您是前端开发人员团队中的众多人员之一,他们专门从事javascript方面的工作,那么您可能会与另一位从事HTML / CSS方面工作的前端开发人员发生冲突。他们可能从元素中删除一个类,没有意识到它也被用作你的javascript钩子到该元素。在这种情况下,您最好创建自己的数据属性,然后清楚地表明此属性可能与数据相关,并且只是试图修复该元素的样式而不会受到骚扰。< / p>