2012-03-04 2 views
2

Я пробовал разные решения сейчас, но я не могу удалить правильные строки.
Примечание: В HTML5 допустимо использовать числа в 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(); 
} 

Результат всегда один и тот же - некоторые из моих верхних строк будут удалены, а не снизу два.
Что мне не хватает в этом коде?

Update: Вот моя скрипка - 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

+1

Как @am, я не говорю, что числовые идентификаторы ошибочны, но это должно работать, если вы сказали '$ (" # row "+ arr [row_id]) ...'. +1, потому что он должен быть быстрее, чем селектор в исходном ответе. – ClarkeyBoy

+0

@Bane, почему бы вам быть только один правильный, когда мой идентификатор только selectpr был опубликован до yors – charlietfl

-1

Вы пробовали:

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

Что случилось с '$ ('#' + ROW_ID) .remove();'? ;-) – Tomm

+0

Это не улучшит использование селектора * attribute-equals *. –

+2

Не работает. Это 'array [key]', а не 'key'. – corazza

3

У меня есть это для работы - http://jsfiddle.net/fbjut/.

Обратите внимание, что вам действительно не следует использовать числовые идентификаторы, вы должны начать их с «строки» или чего-то (желательно что-то более описательное!).

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

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

Вы должны публиковать ответы здесь, а не только на другом сайте. –

+0

Извините, я думал, что, принимая код адек, меняя его так, чтобы он работал, ссылаясь на него и давая совет в то же время, считая ответом (конец сарказма - это не так много, что я думаю об этом, ** знаю ** это случай ....). – ClarkeyBoy

+0

Не будь грубым. Вопросы и ответы на StackOverflow предназначены для будущих читателей. Чтобы ваш ответ был уверен в том, чтобы быть доступным в будущем, он должен быть размещен здесь, причем дополнительные ссылки являются дополнительными. –

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