Альтернатива jQuery .data ()? - PullRequest
3 голосов
/ 26 мая 2010

Я большой поклонник метода .data () в jQuery, но не всегда могу его использовать. Часто я рендеринг HTML-шаблоны, которые я передаю через AJAX, и мне нужно прикрепить метаданные к каждому из элементов в шаблоне. Например:

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

Я знаю, что прикрепление атрибутов для хранения данных является плохой практикой (и это может даже не работать в более старых версиях IE). Какова лучшая практика? Есть ли хорошая альтернатива этому методу?

Ответы [ 3 ]

3 голосов
/ 27 мая 2010
2 голосов
/ 26 мая 2010

Если у всех рассматриваемых элементов есть идентификаторы, то они (независимо от того, какой язык на стороне сервера) вводят их в массив javascript, где идентификаторы - это ключи, а метаданные - значения.

Пример:

<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>
1 голос
/ 27 мая 2010

Я думаю, что практика присоединения классов, которые не служат никакой другой цели, кроме предоставления метаданных, хороша, как и создатели jQueryUI, кажется (см .: .ui-state-error, .ui-state-highlight, .ui-state-active и т. Д.), Но Я не знаю, считается ли это плохой практикой для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...