Подтвердить что ты не робот

Можно ли добавить пользовательские атрибуты Html?

У меня есть сайт, над которым я работаю, где хочу отметить, изменилась ли строка данных. Если что-то было изменено в этой строке, я бы пометил ее специальным атрибутом так.

<tr>
  <td isDirty="true">
     ....row data
  <td>
</tr>

Это отлично работает с jQuery, и оно не добавляет много кода на мою страницу.

Но действительно ли это правильный способ сделать что-то подобное и каковы недостатки?

Я предполагаю, что другой способ сделать это будет таким, но это похоже на убийство.

<tr>
  <td>
     ....row data
     <input id="isDirty" type="hidden" value="true" />
  <td>
</tr>
4b9b3361

Ответ 1

Почему вы не используете данные jQuery?

Ваш пример будет (я не знаю условия для выбора правильного td):

$("tr td").data("isDirty", true);

посмотрите документация

Ответ 2

Технически вы должны использовать для этого атрибут класса. Теги могут иметь более одного класса, поэтому ничего не должны влиять на

<td class="isDirty otherclass">

Ответ 3

HTML 5 поддерживает пользовательские атрибуты с префиксом "data-". Поэтому я бы использовал это для совместимости с Outlook.

Как и в предыдущих версиях, я не думаю, что он будет проверять, но я бы не стал беспокоиться об этом. Я слышал, что некоторые браузеры могут игнорировать эти теги. Поэтому обязательно проверяйте все это.

Ответ 4

Это предотвратит проверку вашей страницы, я думаю, поскольку вы добавляете пользовательские атрибуты, о которых валидаторы не знают.

Возможно, вы сможете сделать это с помощью собственного DTD или схемы, но это больше работает.

Ваш второй пример - правильный способ сделать это, я думаю. В любом случае, правильное направление.

Ответ 5

Придерживаясь стандартов, связанных с соблюдением стандартов, это плохая причина придерживаться стандартов.

Ваша страница указывает DTD, ваш сервер задает тип mimetype. Пока вы не отправляете настоящий xhtml, нет причин не использовать атрибуты expando таким образом. Это может быть очень полезно.

Хорошо, поэтому ваша страница не будет "проверять", если вам нужно об этом заботиться, а затем не делайте этого.

Просто не соблазняйтесь с помощью метода elem.isDirtyDesign для доступа к таким значениям. Всегда используйте elem.getAttribute('isDirty') для доступа к значению.

Ответ 6

Я настоятельно рекомендую придерживаться стандартов. Веб уже испорчен;)

Ответ 7

Я считаю, что на ваш вопрос нет ответа "Да" или "Нет". Использование пользовательских атрибутов поможет вам иметь более чистый и более короткий код во многих случаях. Ваш пример тривиален, и я считаю, что он не может продемонстрировать силу и гибкость этой техники. В частности, вы имеете дело с логическим атрибутом, который, скорее всего, связан с внешним видом. Такие вещи лучше обрабатываются классом. Однако с помощью настраиваемых атрибутов вы можете добавить контекст к своим узлам. Вы можете использовать этот контекст для выполнения некоторых расчетов. Например, добавьте атрибут цены или веса в узлы списка. Затем вы используете эти поля для вычисления суммы или среднего значения. Я уверен, что есть много лучших, чем эти примеры.

С другой стороны, пользовательские атрибуты не позволят html пройти проверку проверки. Это важная проблема, и она может стать еще более важной в будущем.

Ответ 8

Использование настраиваемого атрибута полезно с нескольких точек зрения, но обязательно избегайте конфликта имен с помощью префикса:

<td custom:isDirty="true">

В противном случае он может столкнуться с будущими реализациями.

В качестве побочного элемента DOM-элемент может иметь пользовательские свойства, такие как любой другой js-объект, а это означает, что при динамическом создании узлов вы можете добавлять к вашему элементу пользовательские данные любого типа, не влияя на проверку.

var element = document.createElement('div');
element.myCustomObject = { foo: "bar", someFunction: function () { alert('foobar'); }};

document.body.appendChild(element);

Конечно, вышеизложенное не имеет смысла для людей, которые никогда не делали клиентские скрипты без фреймворков, таких как jQuery, прототип и т.д....:)

Ответ 9

isDirty - прекрасный пример того, как должен быть назван класс. Имена классов должны быть семантическими, и я не могу придумать, как лучше назначить класс для описания того, что это касается этого элемента (кроме использования названия, если вы хотите поделиться этой информацией с конечным пользователем)?

Вы не должны устанавливать свои собственные атрибуты, если вы не хотите поддерживать собственный DTD.

Ответ 10

Добавление произвольных атрибутов будет означать, что ваш HTML больше не действителен.

Если вы используете XHTML, я думаю, вы можете добавить атрибуты, которые имеют другое пространство имен XML, что не вызовет проблемы с проверкой.

Я не очень много знаю об этом, но думал, что упомянул об этом, как никто другой. Возможно, кто-то еще может расширить или опровергнуть это, если у них есть лучшее понимание?

Ответ 11

Несколько лет назад я использовал пользовательские атрибуты, и они работают. Выполнение этого же, следуя стандарту html 5, позволит избежать будущих проблем, поскольку прошлой проблемы не существует. будущие проблемы могут возникать с устройствами movil и другими устройствами, отличными от компьютера, но, поскольку они будут частью ближайшего будущего, придерживайтесь html 5 пользовательских атрибутов, если вы хотите их использовать. Мой новый случай прост, что я делаю, это использовать теги, хорошо закодированные, с простыми данными между ними (переменными данными), которые я получаю через nodeValue с вашим элементом... this.firstChild.nodeValue и ключ состоит в том, чтобы сделать использованным тегом отображение по стилю как вы это получите? getelementbyID, по тэгу, по имени, по имени класса, которое вы выберете. преимущества Нет необходимости кодировать декодированные объекты и т.д., Не нужно jquery