2014-11-28 3 views
0

일부 html 온도계는 jQuery로 애니메이션화되어 백분율 숫자를 나타냅니다 (in the Fiddle 참조).CSS 배경을 jQuery 조건으로 변경하십시오.

내가 원하는 것은 무엇이며, 내가 뭘 잘못하고 있는지 알 수 없다. 온도계의 색을 그들이 나타내는 수준에 따라 바꾼다. 예를 들어 피들의 대본에서 80 세 미만은 파란색으로 파란색이어야하고 80 세 이상은 노란색이어야하지만 모두 파란색으로 변합니다.

이것은 jQuery 코드입니다 :

$('.lvl').each(function(){ 
    var level = $(this).text(); 
    $(this).animate({ 
     width: level+'%' 
    }, 1000); 

    var lvlwidth = $(this).width(); 
    if (lvlwidth < 80) { 
     $(this).css('background-color', 'blue'); 
    } else if (lvlwidth > 80) { 
     $(this).css('background-color', 'yellow'); 
    } 
}); 

업데이트 : 아래의 의견에 말하는 것처럼는, 내가 원하는 것은 성장에 따라 예를 때 파란색으로 이처럼 동적으로 색상을 변경하는 바입니다 40도 미만이고 노란색으로 바뀌면 80도까지 빨갛게 변합니다.

+0

당신은 애니메이션을 시작으로 폭을 확인하고, 그 시점에서 요소가 더 폭이 없습니다. 왜 당신은 이미'level' 변수를 사용하지 않았습니까? – adeneo

+0

http://jsfiddle.net/adeneo/rpxr4bjj/1/ – adeneo

+0

감사합니다. @adeneo. 나는 그것을 성장시키면서 동적으로 변화 시키길 원했기 때문에 그 일을하지 않았습니다. 그래서 처음에는 한 색이었고, 40에 도달하면 다른 색으로 변한 다음 80에 도달하면 다시 변합니다. '수준' 변수는 'width'가 변경되는 동안 고정됩니다. – RMajidi

답변

1

UPDATE :

http://jsfiddle.net/rpxr4bjj/3/

$('.lvl').each(function() { 
    var level = $(this).text(); 
    $(this).animate({ 
     width: level + '%', 
    }, { 
     progress: function() { 


      if (level < 80) { 
       $(this).css('background-color', 'blue'); 
      } else if (level > 80) { 
       $(this).css('background-color', 'yellow'); 
      } 
     } 
    }, 3000); 


}); 
+0

감사합니다 @ dm4web, 그러나 그들은 모두 지금 노란색으로 가지 않습니까? 이 예에서 파란색으로 남겨두기로되어있는 '너비 : 80 %'에 속하지 않는 사람입니까? – RMajidi

+0

FF로 테스트하고 작동합니다. 크롬에서는 모두 노란색입니다. 그리고 나는 – dm4web

+0

을 볼 것이다. 나는 수정을 더했다. 문제는 Chrome이나 FF가 아닌 너비입니다. – dm4web

관련 문제