Вопрос

Я создаю страницу настройки сайта, которая динамически изменяет текущую страницу, чтобы вы могли видеть предварительный просмотр того, что вы меняете. Все работает довольно хорошо, за исключением того, что код, который я использую, по-видимому, не может обрабатывать псевдоклассы, такие как :hover и :visited.

Код очень прост, в основном я делаю следующее:

$("#links td.active a:hover").css("color", "#ff0000");

Однако на самом деле это не устанавливает цвет наведения тега <a> на #ff0000. Это работает нормально, если я снимаю document.styleSheets.inlinestyle.rules хотя. У кого-нибудь есть предложения относительно того, как заставить это работать?

Большое спасибо!

Правка 1: Очевидно, я могу ошибаться вообще. Еще немного информации показывает, что я мог бы использовать <=> для его изменения, хотя, очевидно, это работает только в IE. Буду признателен за любые идеи.

Это было полезно?

Решение 4

Ну, я наконец-то понял, как заставить это работать так, как я хотел. Вот основной код:

function updatePageCSS(input, color) {
  $('style.new_css_styles').remove();

  var new_css_styles = "<style class='new_css_styles'>";

  $('input.colorPicker').each(function() {
    var id = $(this).attr('id');
    var selector = $('#' + id + '_selector').val();
    var attribute = $('#' + id + '_attribute').val();
    var new_color = color;

    if ($(this).attr('id') != $(input).attr('id')) {
      new_color = $(this).val();
    }

    new_css_string += selector + ' { ' + attribute + ': ' + new_color + ' }\n';
  });

  new_css_styles += "</style>";

  $('head').append(new_css_styles);
}

Обратите внимание, что selector и attribute являются значениями скрытых входных данных. Хотя мне не очень нравится такой подход, похоже, он выполняет свою работу.

scroll top