JQuery .addClass()完成了他的工作,但浏览器没有重新绘制

时间:2014-12-18 14:11:57

标签: jquery css browser addclass repaint

我知道这不是新的,但我已经尝试了所有我找到的补救措施而没有解决问题......

我有一些JQuery代码,通过动态分配类,将 background-color 提供给div,将 color 提供给h *。

  1. 正确加载css并应用于所有内容
  2. .addClass方法完全符合我的预期,使用Chrome的DevTools我可以看到该类已分配给正确的元素
  3. 颜色不会改变
  4. 在样式检查器中,没有显示应用的新样式
  5. 如果我尝试这样的话

    $.fn.redraw = function(){
         return $(this).each(
             function(){ 
                 var redraw = this.offsetHeight; 
             }
         );
    };
    

    以这种方式更改结束时调用它

    $(selector).redraw();
    

    不起作用。

  6. FF / Chrome的行为相同。

  7. 如果我更改代码,使用.addClass的.attr(“style”,value)来分配内联样式它可以工作! 但我不喜欢这个解决方案,我宁愿避免使用外部CSS的硬编码内联样式。

    有人有建议吗?这是我试图猜测正确步骤的两天......

1 个答案:

答案 0 :(得分:0)

我记得有同样的问题,我相信我解决了这个问题:

 $(this).removeClass("old_class");
 $(this).css({ 'background-color' : '' });
 $(this).addClass("new_class");

首先删除旧类,然后将background-color设置为nothing,最后添加新类。