jQuery .data() 的替代品?

发布于 2024-09-03 02:15:58 字数 322 浏览 3 评论 0原文

我非常喜欢 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

惟欲睡 2024-09-10 02:15:58

如果有问题的元素都有 id,那么(无论是什么服务器端语言)将它们注入到 javascript 数组中,其中 id 是键,元数据是值。

例子:

<script type="text/javascript">
    var metadata;
    {% for item in itemlist %}
        metadata['{{ item.id }}'] = '{{ item.metadata }}';
    {% endfor %}
    //metadata contains a set of id => metadat pairs
</script>

<ul>
    {% for item in itemlist %}
    <li id="{{ item.id }}">{{ item.name }}</li>
    {% endfor %}
</ul>

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:

<script type="text/javascript">
    var metadata;
    {% for item in itemlist %}
        metadata['{{ item.id }}'] = '{{ item.metadata }}';
    {% endfor %}
    //metadata contains a set of id => metadat pairs
</script>

<ul>
    {% for item in itemlist %}
    <li id="{{ item.id }}">{{ item.name }}</li>
    {% endfor %}
</ul>
篱下浅笙歌 2024-09-10 02:15:58

我认为附加除了提供元数据之外没有其他用途的类的做法很好,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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文