2011-12-05 72 views
3

這個簡單的腳本,使用jQuery添加/刪除表格行使與1.3.2版本的效果很好。然而,在同一頁上我也使用需要jQuery> 1.6的腳本。此腳本不再適用於此,因爲如果我單擊第二次添加,它將刪除一行而不是添加它。腳本不能使用新版本的jQuery

工作示例可以在這裏找到:http://jsbin.com/arete3/edit#source

$(function(){ 
     $("input[type='button'].AddRow").toggle(
      function(){ 
       $(this).closest('tr').clone(true).prependTo($(this).closest('table')); 
       $(this).attr("value", "Delete row"); 
      }, 
      function(){ 
       $(this).closest('tr').remove();   
     }); 
    }); 

要明白我的意思,改變了jQuery版本爲任何高於1.6

有沒有人有一個建議?

+0

什麼是錯誤訊息? –

+0

那麼,更高的jQuery版本的行爲是正確的。你想要發生什麼? –

+0

該代碼看起來並不像.toggle一個正確的簽名。 HTTP://api.jquery。COM /切換/ – AutoSponge

回答

1

這是一個腳本,可以做你想要的。
我不知道你爲什麼使用.toggle,因爲它一次添加和下一次刪除。這是毫無意義的。

Check out this JSBin

我覺得這是你在找什麼。

$(function(){ 
// Add row on click (on click of the add button) 
$("input[type='button'].AddRow").click(function(){ 
    // Add the row 
    $(this).closest('tr').clone(true).prependTo($(this).closest('table')); 
}); 

// Delete row on click (on click of the delete button) 
$("input[type='button'].DelRow").click(function(){ 
    // Delete the row 
    $(this).closest('tr').remove(); 
}); 
}); // End DOM 
+0

您正在以這種方式更改標記,您應該嘗試在進行這種重構時限制更改。 –

+0

這也適用,謝謝。我唯一缺少的就是你可以刪除第一行。但現在已經解決了。謝謝你的幫助。 – mat

1

那麼你可以改變這樣的腳本

$("input[type='button'].AddRow").click(

function() { 
    var index = $(this).closest('tr').index(); 
    if (index > 0) { 
     $(this).closest('tr').remove(); 
    } else { 
     $(this).closest('tr').clone(true).prependTo($(this).closest('table')); 
     $(this).val("Delete row"); 
    } 

}); 

小提琴這裏http://jsfiddle.net/nicolapeluchetti/fGam7/

+0

工程就像一個魅力!謝謝! – mat

+0

是否可以在HTML標籤的id中添加某種計數器?我使用jQuery datepicker插件(jQuery UI),它可以在一個字段上工作,但是使用這個腳本的每個字段都是相同的ID。 – mat

+0

@mat當然你可以,例如你可以使用索引作爲計數器添加到你的ID。我沒有在你的例子中看到任何id,雖然 –

1

你不能設置一個元素這樣的「價值」。使用 「.VAL() 」:

$(this).val("Delete row"); 

與jQuery 1.6中,「 .attr()」 方法,嚴格的(當然,1.6.1之後,幾乎嚴格)與實際交易屬性,作爲啓動反對屬性類似於<input>元素上的「值」。對於設置屬性,可以使用「.prop()」,或者在「value」屬性的情況下使用「.val()」。

在1.6.1所作的變化是緩和在像「檢查」和「選擇的」幾個布爾屬性/特性的情況下,嚴格。根據我個人的經驗,即使對於這些人來說,堅持「支持()」也更爲安全,尤其是在處理單選按鈕時。 「attribute」和「property」之間的區別看起來很微妙,但它確實很重要,特別是在IE中。「屬性」是通過「setAttribute()」存儲在內部映射的DOM節點中的東西。和DOM節點「的getAttribute()」方法。A「屬性」就像任何其他JavaScript對象屬性。所以,因爲獲取/設置你指的是「值」屬性的<input> DOM節點的值,你使用 「.prop()」 或 「.VAL()」 與jQuery來操縱它。其他重要的特性是 「SRC」, 「HREF」, 「類名」, 「ID」, 「姓名」, 「類型」,「變量名「等)

此外,您可能還想考慮將您的表格行添加到最接近的<tbody>元素,而不是<table>

+0

謝謝你的信息! – mat

相關問題