2013-08-23 2 views
0

Я пытаюсь выполнить итерацию через ячейки таблицы с классами row[i] для строк и col[i] для столбцов. Однако, это в настоящее время не работает:Итерация через последовательные вложенные классы в jQuery?

for (var i = 1; i <= 5; i++) { 
    for (var j = 1; j <= 7; j++) { 
     $(".row[" + i + "] .col[" + j + "]").html('1'); 
    } 
} 

Вот jsFiddle на примере: http://jsfiddle.net/A4HvP/1/

+0

хорошая идея, но им интересно, если строка [я] является допустимое имя класса – bondythegreat

+0

'$ (". row ["+ 1 +"] .col ["+ 1 +"] "). html ('1');' ищет элемент с классом 'row' и атрибутом' 1' и дочерний элемент с классом 'col' и атрибутом' 1' –

+1

Не судя по этому подходу, но я бы предложил переименовать классы в 'row_ #' и 'col_ #', чтобы избежать этой проблемы с помощью' [] ' – mishik

ответ

2

Попробуйте избежать [ с \[

$(".row\\[" + i + "\\] .col\\[" + j + "\\]").html('1'); 

Демо: Fiddle

В качестве альтернативы я бы предложил называть классы как row-1 вместо row[1]

затем

for (var i = 1; i <= 5; i++) { 
    for (var j = 1; j <= 7; j++) { 
     $(".row-" + i + " .col-" + j).html('1'); 
    } 
} 

$(".row[" + 1 + "] .col[" + 1 + "]").html('1'); ищет элемент с классом row и атрибут 1 и ребенка с классом col и приписывать 1

как

<tr class="row" 1> 
    <td class="cell" 1></td> 
</tr> 
+0

Используйте \\ для экранирования, и это может сработать. –

+0

@ FabrícioMatte да, вы были правы –

+0

Я попытался изменить его на .row-1 .col-1 тоже в этом примере: http://jsfiddle.net/GyZQ5/ Он все еще ничего не делает – JVE999

0

Вы должны объяснить, что «не работает».

Однако, возможно, что массивы javascript не основаны на нулевом базисе, а не на одном.

for (var i = 0; i < 5; ++i) { ... } 
+0

Я добавил скрипку, чтобы продемонстрировать (в вопросе). Это название класса, поэтому я не думаю, что это должно быть проблемой. – JVE999

1
var table = document.getElementById("mytab1"); 
for (var i = 0, row; row = table.rows[i]; i++) { 
    //iterate through rows 
    //rows would be accessed using the "row" variable assigned in the for loop 
    for (var j = 0, col; col = row.cells[j]; j++) { 
    //iterate through columns 
    //columns would be accessed using the "col" variable assigned in the for loop 
    } 
} 
Смежные вопросы