2015-06-11 3 views
0

Я пытаюсь динамически менять цвета maphilight.jQuery maphilight динамически меняет цвета

reponse = JSON.parse(reponse); 
$('area').each(function() { 
    $(this).attr('data-maphilight', '{"stroke":0, "fillColor":"CCFFCC", "fillOpacity":0.3, "alwaysOn":true}'); 
    // POUR LA CRÉATION DE BD, METS TOUS LES TERRAIN DANS COMMENTAIRES AVEC UN TYPE 1 
    // $('#commentaireArea').val(($('#commentaireArea').val().concat("('"+$(this).attr('id')+"', 1), \n"))); 
      }) 

    for (var i = 0; reponse.length > i; i++) { 
     var test = '#'.concat(reponse[i].nomTerrain); 
     $(test).attr('data-maphilight', '{"stroke":0, "fillColor":"FF0000", "fillOpacity":0.3, "alwaysOn":true}'); 
    }    
$('img[usemap]').maphilight(); 

Это работает только один раз. Когда это происходит во второй раз, это не так! Он изменяет классы CSS, но не maphilight!

ответ

1

Corect способ сделать это состоит в использовании .data() вместо .attr()

   reponse = JSON.parse(reponse); 

      $('area').each(function() { 
       $(this).data('maphilight', {"stroke":0, "alwaysOn": true, "fillColor":"CCFFCC", "fillOpacity":0.3})     
       // POUR LA CRÉATION DE BD, METS TOUS LES TERRAIN DANS COMMENTAIRES AVEC UN TYPE 1 
       // $('#commentaireArea').val(($('#commentaireArea').val().concat("('"+$(this).attr('id')+"', 1), \n"))); 
      }) 

         for (var i = 0; reponse.length > i; i++) { 
       var id = '#'.concat(reponse[i].nomTerrain); 
       $(id).data('maphilight', {"stroke":0, "alwaysOn": true, "fillColor":"FF0000", "fillOpacity":0.3}) 
     } 

работает просто отлично.

Смежные вопросы