2013-09-26 3 views
0

Я имею следующую таблицу разметки:JQuery селектор CSS для таблицы

<table> 
    <tr><td>foo</td><td class=marked>foo</td><td>foo</td></tr> 
    <tr><td class=marked>foo</td><td class=marked>foo</td><td class=marked>foo</td></tr> 
    <tr><td>foo</td><td>foo</td><td>foo</td></tr> 
    <tr><td>foo</td><td>foo</td><td class=marked>foo</td></tr> 
</table> 

Несколько клеток помеченную класса marked - как я могу выбрать все строки, которые имеют клетки с классом marked? Я знаю, как выбрать все отмеченные ячейки, но мне нужны строки для селектора, чтобы их пропустить.

То, что я хочу, чтобы достичь является массивом/JSON строка, которая содержит все данные всех строк с клеточными индексами меченых клеток, которые будут выглядеть примерно так:

rowdata[0] = [1]; 
rowdata[1] = [0,1,2]; 
rowdata[3] = [2]; 

Любые идеи, что это самый простой способ к этому?

EDIT: К сожалению, была опечатка, я имел в виду класс "marked"

+1

'несколько ячеек помечены класса Foo 'Не совсем. Некоторые имеют «класс», отмеченный «, в то время как некоторые имеют значение« text »для« foo ». Также, пожалуйста, покажите код, который вы попробовали. –

+0

вы можете использовать [содержит селектор] (http://api.jquery.com/contains-selector/) – Pete

ответ

1

Попробуйте как

var rowdata=[]; 

$('tr').each(function(){ 
    $td=$(this).find('td'); 
    arr=[]; 
    $td.each(function(index,value){ 
     if($(this).hasClass('marked')) 
      arr.push(index); 
    }); 
    rowdata.push(arr); 
}); 

Fiddle

0
var rowdata = []; 
$('table tr').each(function() { 
    rowdata.push($(this).find('.marked').map(function() { 
     return $(this).index(); 
    }).get()); 
}); 

DEMO

+0

Этот ответ находится в очереди низкого качества. Пожалуйста, объясните свой код. – johnchen902

+0

@ johnchen902 вы правы, мои извинения –

Смежные вопросы