2013-03-30 40 views
0

我写的插件用复选框操纵。 现在我有一些问题。在我得到JSON后,我想连接我的孩子和父母。 每个孩子都有数据父母与值此id。jQuery亲子通讯

例子:{ “ID”:4 “名称”: “名称1”, “亲本”:1}
例父:{ “ID”:2 “名称”:“名字2“,”父母“:假}

在渲染我的第一级(父母)后,我想追加到父母,他们的孩子。 请帮忙,我不知道这样做的好做法。

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

@KirillKaysarov检查第二个链接 – fmsf