2016-04-08 4 views
1

Я хотел бы использовать функцию each в моем скрипте, но эта функция используется в объекте, что означает, что она возвращает ошибку ... Объект, который я хочу использовать each, равен newPlots.jQuery использовать каждый в объекте

Возможно, вы знаете трюк?

Я хочу добавить участки в newPlots с помощью контента, полученного AJAX. В виде простого текста, newPlots выглядеть следующим образом:

   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 
         } 
        } 
       } 

И то, что я хочу сделать это с помощью функции each в newPlots.

Здесь вы можете найти свой код:

$.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

Это не работает ... – FabriceDouceur

+2

Так bascically, вы хотите, чтобы получить массив объектов ??? Ваш код не имеет смысла и потому, что вы не объясняете, каково ваше ожидаемое поведение, трудно понять его ... –

+0

Измените его на -> var newPlots = $ .map (ret, function (index, элемент) {возвращение "Limoge": { х: element.x, у: element.y, текст: {содержание: "Limoge"}, подсказка: {содержание: "Limoge"}} }); – Amir

ответ

1

Путь вы пытаетесь расширить newPlots не является синтаксически правильным.

Try делает

  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

Спасибо! Он работает очень хорошо! – FabriceDouceur