我正在制作一个由javascript提供一些交互的页面。举一个例子:发送AJAX请求来获取文章内容然后在div中显示该数据的链接。显然在这个例子中,我需要每个链接来存储额外的信息:文章的ID。我一直在处理它的情况下,该方法是把这些信息在href链接这样的:如何存储一些HTML标签的任意数据
<a class="article" href="#5">
然后我使用jQuery找到a.article元素,并附上相应的事件处理程序。 (不要太挂在可用性或语义在这里,它仅仅是一个例子)
无论如何,这种方法可行,但它smells了一下,是不是在扩展所有(如果发生了什么点击函数有多个参数?如果其中一些参数是可选的,会怎么样?)
立即明显的答案是在元素上使用属性。我的意思是,这就是他们的目的,对吧? (有点)。
<a articleid="5" href="link/for/non-js-users.html">
在my recent question我问,如果这种方法是有效的,而且事实证明这短短的定义我自己的DTD(我不知道),那么不,这不是有效的或可靠的。一个普遍的反应是将数据放入class
属性中(尽管这可能是因为我选择的例子很差),但对我而言,这种气味更甚。是的,这在技术上是有效的,但它不是一个好的解决方案。
我过去使用过的另一种方法是实际生成一些JS并将其插入<script>
标记的页面中,创建一个与该对象关联的结构。
var myData = {
link0 : {
articleId : 5,
target : '#showMessage'
// etc...
},
link1 : {
articleId : 13
}
};
<a href="..." id="link0">
但是,这可能是一个真正的屁股维修疼痛,通常只是非常混乱。
因此,要解决这个问题,如何为HTML标记存储任意信息?
相关问题:http://stackoverflow.com/questions/209428/non-standard-attributes-on-html -tags-good-thing-bad-thing-your-thoughts – 2009-01-11 02:10:44