2013-02-22 53 views
0

我想用jquery構建一個簡單的表單。通過構建表單我的意思是我準備投入準備發佈基於點擊按鈕。jQuery - 創建可改變的序列號

因此,例如,我有可能有一個變量是這樣的...

var1 = "<input type='text' value='some product' />"; 

點擊相關按鈕時將在HTML追加到更多的相同。有點像購物車。

我的問題是這樣的,我需要給它們編號,以便使當輸入被添加到列表中它創建相關的索引號,因此最終會

<input id="number1" type="text" /> 
<input id="number2" type="text" /> 
<input id="number3" type="text" /> 
<input id="number4" type="text" /> etc etc... 

那是很簡單的,我剛剛使用var = count ++ 問題出在我想要從列表中刪除項目的能力。我刪除他們的列表使用 $(this).parents('tr')。remove();

但是當你從列表中間刪除一個數字不是順序的。所以我的問題是如何保持這些數字順序。是我如何在第一位添加數字,或者是否有「重新訪問」count變量的先前實例的方法?

我真的不能舉一個例子,我在這裏試了一下,因爲我完全失去了它。我搜索了互聯網,我不確定可能與否。

我不是在懶惰這裏只是尋找某人提供的解決方案,但如果你能指出我的方向是正確的將是偉大的。

+0

我相信使用jquery,唯一的方法是重新審視和重新編號的項目。你可能會抽象出一些代碼,這些代碼會在DOM樹更改時觸發,並在後臺進行重訪/重新編號,但編寫這樣的代碼只需要太多時間來提供這個作爲答案,或許其他人有順便,並會分享:)順便說一句,爲什麼你需要重新編號? – 2013-02-22 08:02:27

回答

0

其實,我發現這個問題很有趣,我花了一些時間來創建答案。

我認爲一個特殊的jQuery插件可以幫助你在這裏,我發佈在下面。 用法的例子就是在這個小提琴:http://jsfiddle.net/FJRNh/

它的工作方式:

  • 隔離「前綴」的一部分 - 在您的案件數
  • 發現所選元素哪個ID開始的所有兄弟姐妹帶有前綴
  • 移除所需的元件
  • 重新編號的兄弟姐妹

它有一個缺點 - 它會重新編號具有相同前綴的所有項目,即使它們之前沒有編號,所以如果您有id的number1,number2,number3,number_foot,那麼number_foot也會重新編號。這可以通過在內部循環中添加正則表達式測試來避免。但我相信,如果你記住這個限制,那麼提供的代碼將只是足夠的

(function ($) { 
    $.fn.renumberingRemove = function() { 
     var $this = $(this); 
     var mthisid = $this.attr('id'); 
     var name = $this[0].nodeName; 
     var numberp = /\D+/.exec($this.attr('id'));    
     var sibl = $this.parent().children(name+"[id^='"+numberp+"']"); 
     $this.remove(); 
     var istart = 1; 
     sibl.each(function() {  
      if (this.id != mthisid) { 
       $(this).attr('id', numberp + istart++); 
      } 
     });   
    }; 
})(jQuery); 
+0

當然用法很簡單:$('#number3')。renumberingRemove(); – 2013-02-22 08:57:37

+0

只是爲了完整性:它假設id的構造總是帶有一個模式:前綴後跟一個數字,並且編號總是從1開始 – 2013-02-22 08:59:47