2016-04-08 5 views
1

Ich möchte eine each Funktion in meinem Skript verwenden, aber diese Funktion wird in einem Objekt verwendet, was bedeutet, dass es einen Fehler zurückgibt ... Das Objekt, das ich verwenden möchte each in ist newPlots.jQuery jede in einem Objekt verwenden

Vielleicht kennen Sie einen Trick?

Ich möchte Plots in newPlots mit dem Inhalt von AJAX zurückgegeben werden. Im Klartext, schauen newPlots wie folgt aus:

   var newPlots = { 
        "City" : { 
         x : 45.834444, 
         y : 1.261667, 
         text : {content : "City"}, 
         tooltip : {content : "City"} 
        } 
        , "City2" : { 
         size:60, 
         x : 47.323056, 
         y : 5.041944, 
         text : { 
          content : "City", 
          position : "left", 
          margin : 5 
         } 
        } 
       } 

Und das, was ich tun möchte, ist mit each Funktion in newPlots.

Hier können Sie meinen Code finden:

$.ajax({ 
type: "post", 
url: '<?php echo $this->Url->build(array('controller'=>'Villes','action'=>'viewresult')); ?>', 
data: { 
    departements: dptcode 
}, 
dataType : "json", 
success: function (ret) { 
      // Update some plots and areas attributes ... 
      var updatedOptions = {'plots' : {}}; 
      // add some new plots .. 
      var newPlots = { 

       $.each(ret, function(index, element) { 
         "Limoge" : { 
          x : element.x, 
          y : element.y, 
          text : {content : "Limoge"}, 
          tooltip : {content : "Limoge"} 
         }, 
       }); 



      } 

      // and delete some others ... 
      var deletedPlots = []; 

      $(".mapcontainer").trigger('update', [updatedOptions, newPlots, deletedPlots, {animDuration : 1000}]); 




}, 
error : function(xhr, textStatus, errorThrown) { 
    alert('An error occurred! ' + errorThrown); 
} 
}); 
+0

Es funktioniert nicht ... – FabriceDouceur

+2

So bascically, möchten Sie ein Array von Objekten bekommen ??? Dein Code macht keinen Sinn und weil du nicht erklärst, was dein erwartetes Verhalten ist, ist es schwer es herauszufinden ... –

+0

Ändere es in -> var newPlots = $ .map (ret, function (index, Element) {return "Limoge": { x: element.x, y: element.y, Text: {Inhalt: "Limoge"}, Tooltip: {Inhalt: "Limoge" }} }); – Amir

Antwort

1

Die Art und Weise Sie versuchen newPlots zu verlängern ist nicht syntaktisch korrekt.

Versuchen Sie,

  var newPlots = newPlots || { }; 
      $.each(ret, function(index, element) { 
        newPlots[element.name] = { 
         x : element.x, 
         y : element.y, 
         text : {content : element.name}, 
         tooltip : {content : element.name} 
        }; 
      }); 
+0

Danke! Es funktioniert sehr gut ! – FabriceDouceur