2013-03-30 71 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