2011-04-27 44 views
1

我動態創建和附加到一個表,一個<tr>與下面的代碼<td>獲取從表索引(TR沒有ID)

$("#table1").append(
     '<tr>'+ 
     '<td style="cursor:pointer" onclick="pass.data.carregar(this.parentNode.rowIndex-2);">'+$("#DRVR_NAME").val()+'</td>'+ 
        '</tr>'); 

這是好到目前爲止,我可以加載將Td數據轉換爲我想要的其他字段,創建它時沒有問題。

但是,除了創建它,我必須允許用戶動態地去除<td>,但你可以看到,沒有ID去尋找。有什麼更好的方法可以讓用戶刪除<td>

我試着下面的代碼:

$("#table1>tbody>td>tr."+teste+"").remove(); 

但沒有成功!測試變量是一個我自動爲寄存器定義的數字。

任何幫助?

+0

你能不能添加一個id屬性,你在做什麼追加?除非有一些獨特的標識符或它始終保持相同的順序,否則沒有任何方法來定位特定元素。如果你總是知道這將是連續第一個單元格,但是,你可以使用的.index()或.EQ() – 2011-04-27 19:05:54

+0

TR談到TD之前的方式,這可能是你的問題。如果你有多個表格單元,你會遇到代碼問題。 – 2011-04-27 19:07:02

+0

@MarcySutton嗨馬西,不幸的是我不能添加一個Id到追加,因爲他們會收到另一個計數器,被另一個函數傳送。 我在這裏有一個櫃檯,如果我可以通過使用該選擇器來選擇TR,那將會很好,但是我只是不知道該怎麼做,我嘗試了很多方法,但沒有成功。 **假設我們有一個名爲「USERID」的計數器,我應該如何通過使用該值來獲得所需的TR?** – 2011-04-27 19:11:56

回答

2

如果test是要刪除的行的從零開始的索引...

$("#table1>tbody>tr:eq("+test+")").remove(); 
+0

Brandom,它的作品,但它開始從零刪除,這是一個文本!我可以在n開始嗎? 2? – 2011-04-27 19:37:32

+0

是的,只要使用'(test + 2)'而不是'test'就可以了。 – Brandon 2011-04-27 19:41:27

+0

布蘭登,它工作完美!感謝您的幫助,我無法想象這是如此簡單......最簡單的解決方案是最難找到的!再次感謝你! :) – 2011-04-27 20:33:19

0

設置一個唯一的ID屬性時動態創建的每個細胞。

<tr id="uniqueID"><td>Cell Content</td></tr> 

然後使用簡單的jquery通過id刪除行。

$('#uniqueID').remove(); 
+0

我試過,但我不能讓它工作,因爲我有一個數組,必須更新每次用戶添加/刪除元素。 它實際上它的工作原理,但如果我刪除表的第一個元素,我不能訪問另一個。 – 2011-04-27 19:32:22

0

你可能會改變你的代碼有點刪除TD每個驅動程序名稱旁邊加一個小X:

$("#table1").append('<tr>'+'<td style="cursor:pointer" onclick="pass.data.carregar(this.parentNode.rowIndex-2);">'+$("#DRVR_NAME").val()+'<span onclick="$(this.parentNode).remove()">x</span></td>'+'</tr>'); 

或者你也可以添加其他功能,單擊處理程序,你是綁定到每個<td>如果他/她想要刪除該元素,將顯示在預定的<div>一條消息,詢問用戶:

$("#table1").append('<tr>'+'<td style="cursor:pointer" onclick="pass.data.carregar(this.parentNode.rowIndex-2);askDelete(this);">'+$("#DRVR_NAME").val()+'</td>'+'</tr>'); 

和叔母雞在代碼中定義一個信息區(ID =「信息區域」)在HTML的地方,並有以下功能:

askDelete(el){ 
    var MA=$('#messageArea'); 
    MA.empty(); 
    MA.html('Do you want to delete ' + el.innerHTML + '?<br>').append('<span id="confirmDelete">delete</span>&nbsp;<span id="cancelDelete">cancel</span>') 
    MA.find('#confirmDelete').click(function(){$(el).remove();}); 
    MA.find('#cancelDelete').click(function(){MA.empty();}) 
} 

然後風格你刪除,並根據需要取消按鈕。

0

你刪除代碼假定存在對TD類。您必須通過引用隱藏字段中的值來使用eq()來定位它。如果在隱藏字段中的值是一個數字(用戶選擇的TD =您的計數器的指數),你可以嘗試這樣的事:

var hiddenFieldValue = $('input.hiddenFieldClassName').val(); 

$("#table1>tbody>tr>td:eq("+hiddenFieldValue+")").remove();