jQuery .data() 的替代品?
我非常喜欢 jQuery 的 .data() 方法,但我不能总是使用它。我经常渲染通过 AJAX 传递的 html 模板,并且需要将元数据附加到模板中的每个元素。例如:
<ul>
{% for item in itemlist %}
<li metadata="{{ item.metadata }}">{{ item.name }}</li>
{% endfor %}
</ul>
我知道附加属性来存储数据是不好的做法(它甚至可能在旧版本的 IE 中不起作用)。最佳实践是什么?这种方法有好的替代方法吗?
I'm a big fan of jQuery's .data() method, but I can't always use it. Often times I am rendering html templates that I pass via AJAX and I need to attach metadata to each of the elements in the template. For example:
<ul>
{% for item in itemlist %}
<li metadata="{{ item.metadata }}">{{ item.name }}</li>
{% endfor %}
</ul>
I know attaching attributes to store data is bad practice (and it might not even work in older versions of IE). What is the best practice? Is there a good alternative to this method?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
data-*
属性。请参阅我可以在 HTML 标记上添加属性吗?。data-*
attributes. See Can I just make up attributes on my HTML tags?.如果有问题的元素都有 id,那么(无论是什么服务器端语言)将它们注入到 javascript 数组中,其中 id 是键,元数据是值。
例子:
If the elements in question all have ids, then have (whatever server-side language that is) inject them into a javascript array, where the ids are the keys, and the metadata the values.
Example:
我认为附加除了提供元数据之外没有其他用途的类的做法很好,jQueryUI 的制造者似乎也是如此(请参阅:
.ui-state-error
、.ui -state-highlight
、.ui-state-active
等),但我不知道这对您来说是否属于不好的做法。I think the practice of attaching classes that serve no purpose other than to provide metadata is fine, and so do the makers of jQueryUI it seems (see:
.ui-state-error
,.ui-state-highlight
,.ui-state-active
, etc), but I don't know if that qualifies as bad practice for you.