読者です 読者をやめる 読者になる 読者になる

jQuery UIのProgressBarの色をvalueによって変える

jQuery UIのProgressBarですが、valueの値によって色を変えたい場合どうするのかなと思って調べたら、そういうオプションってないみたいなので

http://jqueryui.com/demos/progressbar/

<script>
	$(function() {
		$( "#progressbar" ).progressbar({
			value: 37
		});
	});
</script>


普通は緑で、80を超えたらオレンジ、100だと赤にしたい場合の方法をを考えてみました。
大した方法じゃないですが、こんな感じでできました。
なお、ページのロード時に色が変わってればいいということで、progressbarchangeを拾ってどうこうとかは考えませんでした。
progressbarというかただの棒グラフですね



<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
    <script>
      $(function(){

           $("#progressbar1").progressbar({ value: 50 });
           $("#progressbar2").progressbar({ value: 80 });
           $("#progressbar3").progressbar({ value: 100 });

           $("div[id^=progressbar]").each(function(){
                 var selector = $(this).find('div');
                 var value = this.getAttribute( "aria-valuenow" );

                 if (value == 100 ){
                      $(selector).css({ 'background': 'Red' });
                 } else if (value >= 80){
                      $(selector).css({ 'background': 'Orange' });
                 } else{
                      $(selector).css({ 'background': 'Green' });
                 }
           });
      });
    </script>
    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/themes/ui-lightness/jquery-ui.css"  type="text/css" media="all" />
    <style>
      div[id^=progressbar] {
        width: 400px;
        height: 10px;
        margin-bottom: 5px;
      }
    </style>
  </head>
  <body>
    <h1>jQuery UI Progress Bar</h1>
    <div>
      <div id='progressbar1'></div>
      <div id='progressbar2'></div>
      <div id='progressbar3'></div>
    </div>
  </body>
</html>