Как динамически добавить стиль для выравнивания текста с помощью jQuery - PullRequest
79 голосов
/ 19 мая 2009

Я пытаюсь исправить обычные ошибки IE, связанные с CSS 2.1, и мне нужен способ изменить свойства стиля элементов, чтобы добавить собственный стиль выравнивания текста.

В настоящее время в jQuery вы можете сделать что-то вроде

$(this).width() or $(this).height() 

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

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

У меня есть что-то вроде этого

$(this).css("text-align", "center"); 

сразу после настройки ширины и после просмотра этого в firebug я вижу только "ширина" - единственное свойство, установленное в стиле. Любая помощь?

EDIT:

Вау - большой ответ на этот вопрос! Немного подробнее о проблеме под рукой:

Я настраиваю источник js для jqGrid A3.5, чтобы выполнить некоторую настраиваемую работу с подсеткой, и фактический JS, который я настраиваю, показан ниже (извините за использование "this" в моих примерах выше , но я хотел сохранить это для краткости просто)

var subGridJson = function(sjxml, sbid) {
    var tbl, trdiv, tddiv, result = "", i, cur, sgmap,
    dummy = document.createElement("table");
    tbl = document.createElement("tbody");
    $(dummy).attr({ cellSpacing: "0", cellPadding: "0", border: "0" });
    trdiv = document.createElement("tr");
    for (i = 0; i < ts.p.subGridModel[0].name.length; i++) {
        tddiv = document.createElement("th");
        tddiv.className = "ui-state-default ui-th-column";
        $(tddiv).html(ts.p.subGridModel[0].name[i]);
        $(tddiv).width(ts.p.subGridModel[0].width[i]);
        trdiv.appendChild(tddiv);
    }
    tbl.appendChild(trdiv);
}

Я попробовал оба из нижеперечисленных (из предоставленных ответов) безуспешно.

$(tddiv).width(ts.p.subGridModel[0].width[i]).attr('style', 'text-align: center');

И

$(tddiv).width(ts.p.subGridModel[0].width[i]).css('text-align', 'center');

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

Ответы [ 11 ]

0 голосов
/ 09 сентября 2013

Правильно?

<script>
$( "#box" ).one( "click", function() {
  $( this ).css( "width", "+=200" );
});
</script>
...