2012-11-17 90 views
0
inputTabTitle: function(){ 
    origin = template.clone(); 
    $("#inputTabCount").change(function(){ 
    tabcount = parseInt($("#inputTabCount").val()); 
    if(tabcount > 0){ 
     tab = origin.find("label").text(); 
     for(i = 1; i <= tabcount; i ++){ 
     origin.find("label").text(tab + i); 
     origin.find("label").attr("for", "inputTabTitle" + i); 
     origin.find("input").attr("id", "inputTabTitle" + i); 
     $("#tabCount").append(origin); 
     } 
    } 
    }) 
} 

組n = 3jquery的追加進行鏈接替換

當追加到「#tabCount」,只有一個元素插入,實際上應該是three.But像replace.Why執行該代碼附加? 當我在循環結束前添加「origin = origin.clone()」時,它運行良好,插入了三個元素。

+1

你願意和我們分享你的HTML嗎? – nirazul

回答

0

只克隆一次模板。這意味着:兩次你將'起源'追加到一個已經存在的地方。爲了得到你想要的(或者我認爲你想要的),克隆必須在循環中。

請注意,如果您在沒有「var」的情況下定義諸如「tabcount」之類的變量,則會污染GLOBAL空間。我也在你的源代碼中修復了這個問題。

重寫下面的函數。 但需要警告:每次值改變時都會插入標籤數量。這意味着:

  • 值變爲1 - >一個凸片由
  • 值變爲2 - >兩個額外的製表符製成。

inputTabTitle: function(){ 
    $("#inputTabCount").change(function(){ 
     var tabcount = parseInt($("#inputTabCount").val()); 

     if(tabcount > 0){ 
      tab = template.find("label").text(); 

      for(i = 1; i <= tabcount; i ++){ 
       var origin = template.clone(); 

       origin.find("label").text(tab + i); 
       origin.find("label").attr("for", "inputTabTitle" + i); 
       origin.find("input").attr("id", "inputTabTitle" + i); 

       $("#tabCount").append(origin); 
      } 
     } 
    }) 

}