2013-06-03 36 views
1

我試圖刪除字符串中的某個錶行。例如,我有一個字符串下面的代碼。讓我們稱之爲存儲下面temp根據選擇的id刪除字符串中的特定行文本

<tr> 
<td></td> 
</tr> 
<tr> 
<td></td> 
</tr> 
<tr> 
<td></td> 
</tr> 

字符串我有對應行的上述號碼ID的幾個按鈕的變量。如果我點擊第一個按鈕,它有一個相應的ID爲1,第二個按鈕有2等。

我得到的是,如果我點擊這些刪除按鈕,我想刪除上面相應的錶行在什麼id(按鈕)我點擊。

這是我的代碼到目前爲止。

$(".delete").click(function() { 
    var id = $(this).attr("id"); 
    var temp = $("#detailsBox").val(); 

    for (i=1; i!=id; i++) { 
    if (i=1) { 

    } 
    } 

    $(this).closest('tr').remove(); 

} 

我如何我會在我的變量temp刪除字符串的一部分基於關閉ID(按鈕)的點擊?如果我選擇按鈕1,我想刪除第一個表格行。按鈕二,第二個表格行等我知道我需要替換字符串,但是如何刪除字符串中的某些實例?

+0

內部的for循環是非常不安全的。在id不是數字> 1的情況下,該循環可能永遠不會結束。 – crush

+1

該id始終是一個大於1的數字。 – wowzuzz

+1

您可以通過行尾字符(可能是\ n \ r)將字符串拆分爲數組,然後使用Array.splice將相應的行從串。完成後使用'Array.join'將它們放回到一個字符串中。如果您無法保證行/單元格始終位於新行,則可能需要將其轉換爲DOM對象,將其刪除,然後將其保存回字符串。 – crush

回答

1

解析HTML是dangerous。因此,我建議您將字符串轉換爲DOM,然後在DOM樹上進行操作。

下面是使用jQuery一個簡單的解決方案:

var row = 1; // the row I want to remove 
var temp = $("#myTextarea").value(); // get HTML 

var table = $("<tbody>" + temp + "<tbody>"); // creates DOM nodes from HTML 
table.find("tr").eq(row - 1).remove(); 
var tempWithoutRow = table[0].innerHTML; 

嘗試自己JSFiddle

+0

這是正確的答案。感謝Mifeet。 – wowzuzz

+0

我沒有意識到,發現將返回一個數組與密鑰爲0. – wowzuzz

+1

它實際上返回一個'jQuery'對象,其行爲像一個數組。請參閱description [here](http://api.jquery.com/Types/#jQuery)。 – Mifeet

-1

簡單的解決方案將是給行有意義的ID和使用下面的代碼:

$(".delete").click(function() { 
    $('#row' + $(this).id).remove(); 
} 

如果你真的想指望在一個字符串無名TR元素,你可以將它們分割成一個陣列,split("<tr>")

+0

是的,這將是一個明智的想法。問題是,以前的開發人員已經創建了大量的這些錶行,但沒有id屬性。考慮到有很多沒有ID的表格行,這將非常耗時。 – wowzuzz

0

您可以選擇所有的錶行,然後篩選到一個你想要的:

$(".delete").click(function() { 
    var id = $(this).attr("id"); 
    $("#my-table").find("tr").eq(id + 1).remove();//since your IDs are not zero-indexed and .eq() is 
}); 
1

您正在嘗試使用jQuery,猶如該元素在DOM ......他們都沒有。他們只是一個字符串。所以你可以做這樣的事情:

var arr = yourString.split("<tr>"); 

$(".delete").click(function() { 
var id = $(this).attr("id"); 
arr = arr.splice(parceInt(id, 10)-1, 1); 
} 

現在你有陣列與正確的TR內。所有你需要做的就是將它們重新轉換爲字符串:

var htmlString; 
for (var i=0; i<arr.length; i++) { 
    htmlString += arr[i]; 
} 

UPDATE的jQuery WAY 您可以用jQuery做到這一點。看看小提琴

http://jsfiddle.net/J6HJ2/2/

0
$(".delete").click(function() { 
    var id = $(this).attr("id"); 
    var temp = $("#detailsBox").val(); 

    for (i=1; i!=id; i++) { 
    if (i=1) { 

    } 
    } 

    $(this).parentNode.remove(); 

} 

如果。刪除是對TD

否則,如果u有<td><button class="delete"></button></td>

那麼它的​​

不需要的ID如果按鈕是<tr>

相關問題