Я делаю страницу, которая имеет некоторое взаимодействие, предоставляемое JavaScript. Просто в качестве примера: ссылки, которые отправляют запрос AJAX для получения содержимого статей, а затем отображают эти данные в div. Очевидно, что в этом примере мне нужна каждая ссылка для хранения дополнительной информации: идентификатора статьи. То, как я справлялся с этим, заключалось в том, чтобы поместить эту информацию в ссылку href:
<a class="article" href="#5">
Затем я использую jQuery, чтобы найти элементы a.article и присоединить соответствующий обработчик событий. (не зацикливайтесь на юзабилити или семантике, это всего лишь пример)
В любом случае, этот метод работает, но он немного пахнет и совсем не расширяется (что произойдет, если функция щелчка имеет более одного параметра? Что делать, если некоторые из этих параметров являются необязательными?)
Сразу очевидным ответом было использование атрибутов элемента. Я имею в виду, для этого они и нужны, верно? (Вид).
<a articleid="5" href="link/for/non-js-users.html">
В своем недавнем вопросе я спросил, был ли этот метод действительным, и оказалось, что если не считать моего собственного DTD (я не знаю), то нет, он недействителен или надежен. Обычным ответом было поместить данные в class
атрибут (хотя это могло быть из-за моего неудачно выбранного примера), но для меня это пахнет еще больше. Да, это технически правильно, но это не очень хорошее решение.
Другой метод, который я использовал в прошлом, состоял в том, чтобы фактически сгенерировать JS и вставить его на страницу в <script>
теге, создав структуру, которая будет ассоциироваться с объектом.
var myData = {
link0 : {
articleId : 5,
target : '#showMessage'
// etc...
},
link1 : {
articleId : 13
}
};
<a href="..." id="link0">
Но это может быть реальная боль в поддержании и обычно просто очень грязно.
Итак, чтобы перейти к вопросу, как хранить произвольные фрагменты информации для тегов HTML ?