繁体   English   中英

是否可以添加自定义Html属性?

[英]Is it alright to add custom Html attributes?

如果有一行数据被更改,我有一个我想要标记的网站。 如果在该行中更改了某些内容,我会使用自定义属性标记它。

<tr>
  <td isDirty="true">
     ....row data
  <td>
</tr>

这适用于jQuery,它不会为我的页面添加太多代码。

但这是否真的是做这样的事情的正确方法,有什么缺点?

我想另一种做法就是这样,但似乎过度杀戮。

<tr>
  <td>
     ....row data
     <input id="isDirty" type="hidden" value="true" />
  <td>
</tr>

为什么不使用jQuery数据功能?

你的例子是(我不知道选择合适的td的条件):

$("tr td").data("isDirty", true);

看看文档

从技术上讲,你应该使用class属性。 标签可以有多个类,因此它不应该影响任何东西

<td class="isDirty otherclass">

HTML 5支持前缀为“data-”的自定义属性。 所以,我会用它来向前兼容。

至于早期版本,我认为它不会验证,但我不担心。 我听说有些浏览器可能会忽略这些标签。 所以,一定要全面测试一下。

这会阻止您的页面验证我认为,因为您要添加验证程序不知道的自定义属性。

您可以使用自己的DTD或模式执行此操作,但这样做更多。

你的第二个例子是我想的正确方法。 无论如何正确的方向。

为了坚持标准而坚持标准是坚持标准的一个坏理由。

您的页面指定DTD,您的服务器指定mimetype。 只要您不发送真正的xhtml,就没有理由不以这种方式使用expando属性。 它可能非常有用。

好的,所以如果您需要关心它,那么您的页面将不会“验证”,然后不要这样做。

只是不要被IE的“方便”的elem.isDirty访问这些值的方法所诱惑。 始终使用elem.getAttribute('isDirty')来访问该值。

几年前我使用自定义属性,他们工作。 按照html 5标准执行相同操作,将避免将来出现问题,因为过去的问题不存在。 未来的问题可能来自movil设备和其他设备不同于计算机,但是,因为它们将成为不久的将来的一部分,如果你想使用它们,坚持使用html 5自定义属性。 我的新案例很简单,我所做的是使用编码良好的标签,中间的简单数据(可变数据),我通过nodeValue得到你的元素...... this.firstChild.nodeValue,关键是使用标签显示无风格你怎么得到这个? getelementbyID,按标记名,按名称,按您选择的类名。 优点无需编码解码实体等,无需jquery

我强烈建议坚持标准。 网络已经搞砸了;)

我相信你的问题没有“是”或“否”的答案。 在许多情况下,使用自定义属性将帮助您获得更清晰,更短的代码。 你的例子是微不足道的,我相信它无法证明这种技术的力量和灵活性。 具体来说,您正在处理布尔属性,这很可能与外观有关。 这类事情可以通过课程来更好地处理。 但是,使用自定义属性,您可以向节点添加上下文。 您可以使用此上下文进行一些计算。 例如,将价格或权重属性添加到列表的节点。 然后,您可以使用这些字段计算总和或平均值。 我相信那里有比这个例子更好的东西。

另一方面,自定义属性将阻止html通过验证测试。 这是一个重要问题,未来可能会变得更加重要。

从几个角度来看,使用自定义属性非常有用,但请务必使用前缀来避免命名空间冲突:

<td custom:isDirty="true">

否则它可能会与未来的实现发生冲突。

作为旁注,DOM元素可以像任何其他js-object一样具有自定义属性,这意味着如果您动态创建节点,您仍然可以向元素添加任何类型的自定义数据,而不会影响验证。

var element = document.createElement('div');
element.myCustomObject = { foo: "bar", someFunction: function () { alert('foobar'); }};

document.body.appendChild(element);

当然,对于那些没有像jQuery,原型等框架那样从未编写过客户端脚本的人来说,上面没有意义...... :)

isDirty是一个如何命名类的完美示例。 类名应该是语义的,我想不出更好的方法来分配一个类来描述它与该元素的关系(除非你想与最终用户共享该信息,否则使用标题)?

除非您愿意维护自己的DTD,否则不应设置自己的属性。

添加任意属性意味着您的HTML不再有效。

但是,如果您使用的是XHTML,我认为您可以添加具有不同XML命名空间的属性,这不会导致验证问题。

我对此并不了解,但我认为我没有提到它。 如果他们有更好的理解,也许其他人可以扩展或反驳这个?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM