JQuery «addClass» иногда не удается, но CSS не - PullRequest
1 голос
/ 16 декабря 2009

в некоторых случаях это не будет работать:

("#id").addClass("class");

тогда как это будет:

("#id").css('color','Blue');

почему это не получится и как добавить класс в противном случае?

Ответы [ 5 ]

5 голосов
/ 16 декабря 2009

Концепция ключа: Специфика CSS

От специфики CSS: что нужно знать:

  1. Специфичность определяет, какое правило CSS применяется браузерами.
  2. Специфика - это обычно причина, по которой ваши CSS-правила не применяются к некоторым элементам, хотя вы думаете, что они должны.
  3. Каждый селектор имеет свое место в иерархии специфичности.
  4. Если два селектора применяются к одному и тому же элементу, выигрывает тот, у которого более высокая специфичность.
  5. Существует четыре категории, которые определяют уровень специфичности данного селектора: встроенные стили, идентификаторы, классы + атрибуты и элементы.
    ...

Милый маленький Шпаргалка :

CSS Specificity Cheat Sheet
(источник: allapis.com )

1 голос
/ 16 декабря 2009

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

1 голос
/ 16 декабря 2009

Если применяется встроенный стиль , то addClass может завершиться ошибкой.

Пример

$(function() {
    $("#ul1 li a" ).hover(
       function () {
           $(this).css('color','red');
       }, 
       function () {
           $(this).css('color','blue');
       }
    );
});

<ul id="ul1">
    <li>
        <a href="#">test
        </a>
    </li>
</ul>

Для этого также можно использовать метод toggleClass .

0 голосов
/ 16 декабря 2009

Сделай одно, попробуй что-то вроде

 ("#id").addClass("test");

Теперь проверьте с помощью панели инструментов разработчика Firebug / IE, применяется ли этот фиктивный «тестовый» класс.

0 голосов
/ 16 декабря 2009

Это возможно потому, что когда класс уже применен, он не будет применен снова. Jquery проверяет это. Метод css применяется без учета предыдущих стилей.

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