Реализация + селектор для IE6 - PullRequest
2 голосов
/ 30 мая 2009

Мне действительно нравится селектор + и я не хочу добавлять еще одно правило css только для обхода IE6. Так есть ли способ jquery, чтобы проверить все существующие правила CSS, если он использует селектор +, а затем изменить элемент.

Примерно так:

if (IE6)
  for (var rule in $.cssrules)
    if (rule.selector.find('+'))
       $(rule).style = rule.style; // here the + selector works even for IE6 because jquery emulates it.

Итак, основной вопрос: могу ли я получить массив (или что-то еще) всех правил CSS, определенных в документе?

Ура, Manuel

Ответы [ 3 ]

0 голосов
/ 31 мая 2009

Есть способ сделать это. На самом деле, библиотека JavaScript с именем IE7 уже делает это и многое другое - она ​​включает большинство селекторов CSS в Internet Explorer 6 и даже 5: http://code.google.com/p/ie7-js/.
Я должен сказать, что сам этим не пользовался, но слышал об этом неплохо.

0 голосов
/ 31 мая 2009

То, что вы могли бы сделать, выглядит примерно так:

Используйте ваше обычное CSS-правило "все, кроме-IE6", но затем создайте еще один класс с теми же стилями:

/* CSS */
.myNormal + .cssRule + strong,
.myOverrideClass {
    color: #f0f;
}

И затем, используя jQuery, примените класс переопределения к элементам, которые соответствуют вашему обычному селектору CSS:

$('.myNormal + .cssRule + strong').addClass('myOverrideClass');

Используя этот метод, единственный способ не получить стили - это если они работают в IE6 с отключенным Javascript. Пользователи без javascript в других браузерах не будут затронуты.

0 голосов
/ 30 мая 2009

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

...