2014-01-26 4 views
4

Im заселение/вставка jsonObjects[i].type в menu с div по имени #changetotypes. Im получает значения r, c и e от jsonObjects[i].type в меню, знаю, что я хочу иметь возможность нажимать на значение r, c и e и изменять значения по нажатому значению. Знаю, что я могу щелкнуть по объекту и отобразить значение r, c или e. Итак, если я нажимаю на объект, он получает/отображает значение jsonObjects[i].typer, c или e в меню, которое имеет объект. Знайте, как я могу изменить пример значения кликов по объекту от r до c?Как изменить значение объекта на клик?

<li> 
    <a href="#">Typs</a> 
     <ul> 
      <li> 
       <a href="#"><span id="currenttype" title=""></span></a> 
       <ul id="changetotypes"></ul> 
      </li> 
     </ul> 
</li> 

function populateTypes() { 

    for(i = 0; i < jsonObjects.length; i++) { 

     if(availableTypes.indexOf(jsonObjects[i].type) < 0) { 

      availableTypes.push(jsonObjects[i].type); 
      $("#changetotypes").append('<li><a href="#">' + jsonObjects[i].type + '</a></li>'); 
     } 
    } 
} 
+0

Вы пытаетесь достичь чего-то подобного? [jsFiddle] (http://jsfiddle.net/GKDev/73UyJ/2/) – Givi

+0

@ Гиви Привет! Кое-что вроде вашего кода Да ... Я не могу заставить ваш код работать, его говорит ele (ele.insertAdjacentHTML («afterbegin», str);) имеет значение NULL. Но в вашем рабочем примере кода это что-то вроде Да. –

+0

Сделал свой собственный jsFiddle, и я посмотрю на него. – Givi

ответ

0

Вы можете попробовать следующее: (jsFiddle). Предполагая, что jsonObjects происходит откуда-то еще.

function populateTypes() { 
    var availableTypes = []; 
    for(var i = 0; i < jsonObjects.length; i++) { 
     if(availableTypes.indexOf(jsonObjects[i].type) < 0) { 
      availableTypes.push(jsonObjects[i].type); 
      $('<li><a href="#">' + jsonObjects[i].type + '</a></li>') 
      .data('type', jsonObjects[i].type) 
      .on('click', function(){ $('#currenttype').text($(this).data('type')); }) 
      .appendTo('#changetotypes'); 
     } 
    } 
} 

Вот когда мы создаем < Li/> элемент для определенного типа, мы добавляем обработчик щелчка в то же время, что изменяет текст элемента currenttype.

Мы храним тип, который мы хотим изменить currenttype в данных нашем < Li/> элемента таким образом, мы не должны беспокоиться о closures in the loop, но есть и другие способы решения этой проблемы, а также, как создание которая возвращает функцию (см. ссылку) или использует содержимое элемента < a/> (как в $ ('a', $ (this)). text()).

+0

Немного маленькая модификация кода, и ее работа ... –

+0

Отлично. Это что-то, что должно быть изменено в ответе здесь для будущих зрителей, или это связано только с остальной частью вашего кода, которая была оставлена ​​для целей этого вопроса? – Avalanche

+0

Ответ на этот вопрос связан с остальной частью моего кода ... Еще раз спасибо –

0

Вам нужно добавить прослушиватель событий нажмите для каждого #changetotypes детских, а затем изменить внутренний HTML этого ребенка.

Возможно, вам придется предоставить идентификатор каждому ребенку, чтобы узнать, как получить ссылку для каждого из них.

Надеюсь, это поможет.

+0

Привет! Спасибо, я попробую предложить. –

+0

Это сработало для вас? – PaulNunezM

+0

Нет, но спасибо за предложение ... –

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