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