2013-06-10 3 views
1

Если я создаю элемент с пустым селектором, например <div class=""> и другой <div>Создание элементов с пустым selecters

Могу ли я ориентировать, что конкретный элемент как-то из-за пустой класс?

Глядя в инспекторе браузера он читает «div class»

Если он не создает какой-либо класс, связанный с элементом, это может вызвать какие-либо проблемы от того, есть или полностью игнорировать?

ответ

1

На самом деле, есть способ, чтобы выбрать элемент с class=""

Например для этого

<div class=""></div> 

Использование

div[class=""] 

Работа демо:http://jsfiddle.net/JRP4n/

Кажется, что класс с пустым или нулевым значением отличается от того, что вообще не имеет атрибута класса.

Так div[class=""] работает, потому что он действительно нацелен на определенный класс, который пуст.

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

+0

Просто потому, что возможно, возможно, иногда, чтобы выбрать использование пустого селектора, что не делает его даже близким к хорошей идее, в спецификации говорится: «Атрибут , если указано, должно иметь значение, которое представляет собой набор разделенных пространством токенов, представляющих различные классы, к которым принадлежит элемент. », то есть все, что работает, просто удачи и в конечном итоге сломается. – blankabout

+0

@blankabout Правда, но интересно, что он работает во всех основных браузерах и, кажется, больше, чем просто удача. – Arbel

+0

Очень интересно. Я проверил и поиграл с этим, прежде чем задал вопрос. Что может быть причиной этого? Вы видите какую-нибудь полезную реализацию? @Arbel подробно изложит ваш ответ, и я помету его, как ответ. – Aaron

0

Насколько я понял, поведение не определено для пустых имен классов see w3 HTML5 spec, мой опыт в том, что браузеры просто игнорируют пустой атрибут.

+0

Спасибо, но эта ссылка ничего не подтверждает – Aaron

+0

Я думаю, вы бы искали подтверждение отрицания. По сути, если вы определяете пустое имя класса, то это то, что вы получите, браузеры просто проигнорируют его, нет такого понятия, как класс по умолчанию. – blankabout

+0

См. Пример Арбеля выше: – Aaron

0

В общем следующее относится ко всем attributes:

Если не указано иное, атрибуты HTML элементов может иметь любое строковое значение, включая пустую строку.

Это действует, чтобы иметь в HTML5 пустой class attribute:

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

set of space-separated tokens определяется как:

Набор разделенных пробелами маркеров является строкой, содержащей ноль или более слова (известные как маркеры), разделенные одним или несколькими пробелами, где слова состоят из любой строки из одного или нескольких символов, ни один из которых не является символами пробела.

Таким образом, вы можете иметь атрибут class, содержащий нулевые маркеры:

<div class="">This should be valid.</div> 

Вы могли omit the value, тоже:

Пустой атрибут синтаксиса

Просто имя атрибута. Значение неявно является пустой строкой.

Таким образом, вы можете иметь атрибут class без значения (что равно значение с пустой строкой):

<div class>This should be valid.</div> 

В CSS можно выбрать эти элементы с:

[class] {color:red;} /* would select all elements with the class attribute, no matter which value */ 
[class=""] {color:red;} /* would select only elements with empty or no value */ 
[class|=""] {color:red;} /* would select elements that have an empty class value, no class value or a class value beginning with "-" */ 
+0

Удивительный ответ. Действительно ли для этого используется? – Aaron

+0

@ Аарон: Я не могу придумать никакого использования. Может быть, если кто-то захочет выбрать определенные элементы, не придумывая имя класса? ;) – unor

0

Мы допросили, может ли быть какая-либо польза для этой функции, и я нашел применение.

Если вы используете js для удаления всех имен классов из элемента, элемент остается как «класс элемента», поэтому использование [class = ""] {x;} может предназначаться для элементов, из которых вы ранее удалили классы.

Смежные вопросы