我正在做一个有javascript提供的一些交互的页面。举个例子:发送AJAX请求以获取文章内容的链接,然后在div中显示该数据。显然,在这个例子中,我需要每个链接存储一个额外的信息:文章的id。我处理它的方法是把这些信息放在href链接中:
<a class="article" href="#5">
然后使用jQuery找到a.article元素并附加适当的事件处理程序。(不要太纠结于可用性或语义,这只是一个例子)
不管怎样,这个方法是有效的,但是它有点气味,并且根本不是可扩展的(如果click函数有多个参数会发生什么?如果其中一些参数是可选的呢?)
显而易见的答案是在元素上使用属性。我是说,这就是它们的作用,对吧?(种)。
<a articleid="5" href="link/for/non-js-users.html">
在我最近的问题中,我问这个方法是否有效,结果是没有定义自己的DTD(我没有),那么不,它是无效或不可靠的。一种常见的反应是将数据放入class
属性中(尽管这可能是因为我选择的示例不佳),但对我来说,这更有味道。是的,它在技术上是有效的,但它不是一个很好的解决方案。
我过去使用的另一种方法是实际生成一些JS,并将其插入到页面的<script>
标记中,创建一个与对象关联的结构体。
var myData = {
link0 : {
articleId : 5,
target : '#showMessage'
// etc...
},
link1 : {
articleId : 13
}
};
<a href="..." id="link0">
但这是一个真正痛苦的屁股维护,通常只是非常混乱。
所以,要回答这个问题,如何为HTML标签存储任意的信息?