Иногда я добавляю атрибут к некоторым моим средствам управления. Как:
<a href id="myLlink" isClimber="True">Chris Sharma</a>
Я знаю, что это не допустимый HTML. Но это помогает мне в некоторых случаях.
Это рассматривают как плохую практику? Мой друг говорит, что это хорошо для Среды интранета, но в Интернете это не могла бы быть находка, дружественная поисковыми системами.
Если это не хорошая практика, каковы лучшие методы?
Спасибо
Да. Это считается плохой практикой. Ваш HTML (если это 4.0) не будет успешно валидирован. Вместо этого добавьте класс, например, так:
<a href id="myLlink" class="climber" >...</a>
Помните, что у вас может быть несколько классов:
<a href id="myLlink" class="climber girl pretty" >...</a>
И вы можете использовать CSS или JQuery, чтобы выбрать что-то на основе этих классов, и выборочно переопределить стиль на основе комбинаций:
a.climber { color: brown; }
a.climber.girl { color: red; }
a.climber.girl.pretty { color: pink; }
Я не считаю, что это плохая практика как таковая, это, безусловно, очень удобно и именно то, что вы сделали бы в среде xml. Более важен характер информации, которую вы храните в этих настраиваемых атрибутах, и то, как они используются в вашем коде.
Более хорошей альтернативой было бы хранение данных другим способом, например, функцией data () jQuery.
Если вы используете HTML5 doctype, вы можете добавить атрибуты данных которые являются действительными.
Так что что-то вроде следующего будет действительным
<a href id="myLlink" data-isClimber="True">Chris Sharma</a>
Это недействительный XHTML, что плохо - в основном потому, что вы не можете похвастаться действительным ;) Однако все основные браузеры и поисковые системы с удовольствием игнорируют дополнительные атрибуты. Однако вы можете добавить дополнительное пространство имен, чтобы сделать ваш XHTML снова валидным.
<html xmlns:my="http://example.com">
<!-- SNIP -->
<a href id="myLlink" my:isClimber="True">Chris Sharma</a>
<!-- SNIP -->
</html>
Это вполне валидный XHTML. Однако W3C Validator все равно откажется его проверять (я думаю). Это недостаток их парсера XML. Для таких парсеров, не поддерживающих пространства имен, my:isClimber
все равно будет рассматриваться как isClimber
. Но теперь вы можете быть спокойны, так как знаете, что это корректный XML, а это, в конце концов, самое главное, не так ли ;)
Это не лучшая и не хорошая практика.
Полагаю, вам это нужно для какой-то обработки javascript. Я обычно решаю проблему, добавляя пользовательский атрибут "class" с префиксом 'js'.
Другое решение - использовать функции хранения данных/получения данных JQuery или эквивалент любого другого фреймворка, которые подразумевают эхо по всему сгенерированному HTML.