2012-03-04 146 views
2

我已经尝试了不同的解决方案,但我无法删除正确的行。
注意:在HTML5中,使用ID中的数字是有效的。如何删除特定ID的表格行?

HTML

<table> 
    <tr id="2"></tr> 
    <tr id="5"></tr> 
    <tr id="7"></tr> 
    <tr id="9"></tr> 
</table> 

JS

var arr = new Array(); 
arr[0] = '7'; 
arr[1] = '9'; 

for(var row_id in arr) { 
    $('table tr[id='+row_id+']').remove(); 
} 

结果总是一样的 - 我的一些前几列被删除,而不是底部的两个。
我在这段代码中遗漏了什么?

更新:这里是我的小提琴 - http://jsfiddle.net/6PkMK/1/

回答

4

你有两个问题。首先,您使用key而不是array[key]。让我做一个快速演示...

var array = ["a", "b", "c"]; 

for (var i in array) 
{ 
    console.log(i); //0, 1, 2 
    console.log(array[i]); //"a", "b", "c" 
} 

你得到的图片,对吗?第二个问题是,我认为,以错误的方式使用选择器变量。在JQuery中,当你想选择一个带有id的元素时,你可以这样做:$(#id),而不是你这样做的方式。

试试这个:

var arr = new Array(); 
arr[0] = '7'; 
arr[1] = '9'; 

for(var row_id = 0; row_id < arr.length; row_id ++) { //The proper way to iterate 
    $('#' + arr[row_id]).remove(); 
} 

同样地,如果这是假的,请让我知道在评论,我会删除我的答案。

+0

我相信我的答案是迄今为止唯一正确的答案。 – corazza 2012-03-04 23:06:22

+1

由于@am不是我说的,数字ID是错误的,但是如果你说'$(“#row”+ arr [row_id])...'这应该工作。 +1,因为它应该比原始答案中的选择器更快。 – ClarkeyBoy 2012-03-04 23:06:43

+0

@Bane为什么你的只有一个正确的时候我的ID只selectpr在张贴之前 – charlietfl 2012-03-04 23:20:47

-1

你试过:

$('table tr#'+arr[row_id]).remove(); 
+1

这有什么错'$( '#' + ROW_ID)一个.remove();'? ;-) – Tomm 2012-03-04 23:02:21

+0

这不会比使用* attribute-equals *选择器有任何改进。 – 2012-03-04 23:04:39

+2

它不起作用。它是'array [key]',而不是'key'。 – corazza 2012-03-04 23:04:47

3

我得到它的工作 - http://jsfiddle.net/fbjut/

请注意,你真的不应该使用数字ID,你应该开始他们'行'或什么(最好是更具描述性的东西!)。

var arr = new Array(); 
arr[0] = '7'; 
arr[1] = '9'; 

for(var row_id in arr) { 
    $('table tr[id='+arr[row_id]+']').remove(); 
} 
​ 
+0

你应该在这里发布答案,而不只是在不同的网站。 – 2012-03-04 23:30:31

+0

对不起 - 我正在考虑采取asker代码,修改它以便它可以工作,链接到它并提供建议,同时算作答案(讽刺的结尾 - 这不像我想的那样,更重要的是**知道**是这种情况....)。 – ClarkeyBoy 2012-03-04 23:34:28

+0

不要粗鲁。 StackOverflow的问题和答案意味着成为未来读者的资源。为了确保您的答案在将来可用,应在此处张贴,并且非现场链接为补充。 – 2012-03-04 23:40:16

0
var arr = ['7','9']; 

for(i=0;i<arr.length;i++) { 
    $('#'+arr[i]).remove(); 
} 

demo jsBin


/* 
var arr = []; 
arr[0] = '7'; 
arr[1] = '9'; 
*/ 
var arr = ['7','9']; 

for(var row_id in arr) { 
    $('#'+arr[row_id]).remove(); 
} 

demo2 jsBin