2013-03-30 7 views
0

Я накладываю плагин, который манипулировать с помощью флажков. И теперь у меня есть некоторые проблемы. После i получите JSON, я хочу связать своих детей и родителей. У каждого ребенка есть data-parent со значением этого идентификатора.jQuery parent children communication

Пример ребенок: { "ID": 4, "название": "Название 1", "родитель": 1},
Пример родителя: { "идентификатор": 2, "название": " имя 2 "," parent ": false}

После рендеринга моего первого уровня (родителей), я хочу добавить родителей, детей. Пожалуйста, помогите, я не знаю хороших практик для этого.

var $this = this.element; // (target to DOM element, in this context 'body')  
$.getJSON('js/ajax/data.json', function(data) { 
var parentData = []; 
var childrenData = []; 

$.each(data, function(i, item) { 
    if (data[i].parent == false) { 
    parentData.push(
     '<div class="ra-megaselect-rubrics-level-one"><label>' + 
     '<input type="checkbox" data-id="' + data[i].id + '">' + 
     '<span>' + data[i].name + '</span>' + 
     '</label></div> ' 
     )} 
     else { 
      childrenData.push(
      '<div class="ra-megaselect-rubrics-level-two"><label>' + 
      '<input type="checkbox" data-id="' + data[i].id + '" data-parent="' + data[i].parent + '">' + 
      '<span>' + data[i].name + '</span>' + 
      '</label>' 
      )} 
     }); 

     $this.append(parentData); 
     }); 
+0

Ваш код не заполнен и имеет опечатки - например, '$ this', вероятно, не будет работать. Вы имели в виду '$ (this)'? Функция, переданная как второй аргумент '$ .each', пропускает кучу закрывающих фигурных скобок. Трудно понять, в чем проблема, и тот факт, что этот вопрос отсутствует, не облегчает его. Можете ли вы попытаться решить проблему? –

+0

Извините, я исправлю это. Готов. Это часть моего кода плагина. Я отправляю init метод из плагина. –

+0

Без проблем, спасибо. Но не могли бы вы сказать нам, в чем проблема? Есть ли ошибка? Есть ли что-то, чего вы не понимаете? –

ответ

0

Что вы делаете, как известно, как закрытие: http://en.wikipedia.org/wiki/Closure_%28computer_science%29

То, что вы сделали действительно общий код. Часть, которая является плохой практикой, заключается в том, что у вас выброшена бомба HTML, есть строка в середине javascript.

Для удобства обслуживания вы должны, вероятно, превратить своих «детей» и «родителей» в объекты, в которых хранится ссылка на их соответствующий узел, и предоставить вам кучу функций утилиты, чтобы вы могли напрямую ими манипулировать. Take a look here

+0

Вы могли бы написать пример хорошей практики? –

+0

@ Кирилл Кайсаров проверяет вторую ссылку – fmsf

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