Неправильное использование атрибута класса CSS или действительный шаблон дизайна? - PullRequest
6 голосов
/ 10 февраля 2009

Как вы, скорее всего, уже знаете, в JQuery просто выбрать все элементы в документе, которые имеют определенный класс CSS, а затем, используя цепочку, назначить общие обработчики событий для выбранных элементов:

$(".toolWindow").click(toolWindow_click);
$(".toolWindow").keypress(toolWindow_keypress);

Как обычно, класс "toolWindow" также обычно определяется в CSS и связан с некоторыми визуальными стилями:

.toolWindow{
   color:blue;
   background-color:white;
}

Атрибут class теперь отвечает за указание не только внешнего вида (визуального состояния) элемента, но и поведения. В результате я довольно часто использую этот подход и определяю имена классов CSS больше как псевдообъектно-ориентированные классы, а не только визуальные классы CSS. Другими словами, каждый класс представляет как состояние (стили CSS), так и поведение (события).

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

Более того, плагин jQuery LiveQuery (и встроенная функция live ()) делают этот подход еще более эффективным, автоматически связывая события с динамически создаваемыми элементами, принадлежащими указанному классу.

В последнее время я в основном использую имена классов для определения общего набора поведения для связанных элементов DOM и только позже использую их для определения визуального стиля.

Вопросы: Является ли это ужасным неправильным использованием атрибута CSS "class", если да, то почему?

С другой стороны, возможно, это совершенно обоснованный подход к дальнейшей реализации "отдельных задач" и повышению удобства поддержки страниц HTML / DHTML?

Ответы [ 11 ]

0 голосов
/ 06 февраля 2012

Действительно, я не хочу идти дождь на этом параде, потому что он кажется кошерным де-факто. Однако я также вижу, что никто не упомянул http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#class-html, в нижней части которого раздел W3 рекомендует не использовать имена классов CSS для формирования нестандартных микросинтаксисов. Я думаю, что они в основном предупреждают нас не делать страницу, которая полностью состоит из элементов DIV и SPAN и использует различные классы в качестве пользовательских тегов. Они специально не упоминают смешанные классы с поведением.

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