2015-06-19 65 views
1

我已經更改了此問題的Milan Jaric給出的代碼Jquery Clone Form Fields and increment ID但我遇到了一個問題,我試圖克隆Bootstrap崩潰。我看不出如何改變屬性'詠歎調'的價值。更改克隆字段中的詠歎調控制屬性值

這是我目前擁有的the demo。 ID和HREF自行工作良好,但是當我嘗試更改「詠歎調控制」值時,引導程序崩潰中的所有ID和HREF都不會從默認值更改。有任何想法嗎?

JS腳本

var regex = /^(.*)(\d)+$/i; 
var cloneIndex = $(".clonedBox").length; 

function clone() { 
    $(this).parents(".clonedBox").clone() 
     .appendTo("div#accession_boxes") 
     .attr("id", "clonedBox" + cloneIndex) 
     .find("*") 
     .each(function() { 
      var id = this.id || ""; 
      var match = id.match(regex) || []; 

      if (match.length == 3) { 
       this.id = match[1] + (cloneIndex); 
       this.href = match[1] + (cloneIndex); 
       this.attr("a[aria-controls]") = match[1] + cloneIndex; 
      } 
     }) 
     .on('click', '#btnAddBox', clone) 
     .on('click', '#btnDelBox', remove); 
    cloneIndex++; 
} 
function remove() { 
    $(this).parents(".clonedBox").remove(); 
} 
$("#btnAddBox").on("click", clone); 

$("#btnDelBox").on("click", remove); 

是的,我知道我的刪除按鈕不起作用,但它現在不是一個優先事項。

編輯:

由於lmgonzalves,JS腳本現在的作品。以下是更新的腳本。再次感謝您的幫助!

JS腳本(更新版)

var regex = /^(.*)(\d)+$/i; 
var cloneIndex = $(".clonedBox").length; 

function clone() { 
    $(this).parents(".clonedBox").clone() 
     .appendTo("div#accession_boxes") 
     .attr("id", "clonedBox" + cloneIndex) 
     .find("*") 
     .each(function() { 
      var id = this.id || ""; 
      var href = this.href || ""; 
      var aria = $(this).attr("aria-controls") || ""; 

      var matchID = id.match(regex) || []; 
      var matchHref = href.match(regex) || []; 
      var matchAria = aria.match(regex) || []; 

      if (matchID.length == 3) { 
       this.id = matchID[1] + (cloneIndex); 
       this.href = matchHref[1] + (cloneIndex); 
       this.aria = matchAria[1] + (cloneIndex); 
      } 
     }) 
     .on('click', '#btnAddBox', clone) 
     .on('click', '#btnDelBox', remove); 
    cloneIndex++; 
} 
function remove() { 
    $(this).parents(".clonedBox").remove(); 
} 
$("#btnAddBox").on("click", clone); 

$("#btnDelBox").on("click", remove); 
+1

'this.attr( 「A [詠歎調-控制器]」)=匹配[1] + cloneIndex;'不執行任何操作,通過2個參數傳遞給設置 – dandavis

回答

1

要設置使用attr()的屬性,你需要這樣的語法:

$(element).attr("name", value); 

所以在代碼中使用:

$(this).attr("aria-controls", match[1] + cloneIndex); 

相反:

this.attr("a[aria-controls]") = match[1] + cloneIndex; 

請注意,您還需要用$()this「換行」將其轉換爲jQuery對象並允許使用attr()和其他jQuery函數。

DEMO HERE