2012-01-30 3 views
3

Я создал динамически div с классом x в таблице. Как я могу с помощью JavaScript уловить родительский столбец этого div и дать ему определенный класс?Получить таблицу родителя элемента

Прохождение через родительский узел tr и td не сработало. Есть идеи?

+2

, так как ваш вопрос уже был дан ответ, я просто прокомментирую, что ваш скрипт был проворно не знаком с '' между '' и'

'в цепочке parentNode. Брошюры вставляют его неявно. – ori

ответ

3

Если у вас есть jQuery, это очень просто. Если HTML-то вроде этого:

<table> 
    <tr><td><div class="mydiv">hi</div></td></tr> 
</table> 

Тогда вы можете сказать что-то вроде:

$('div.mydiv').closest('table').addClass('someclass'); 

closest функция идет в дереве DOM, пока он не достигнет элемента, который соответствует селектор вы даете (в этом случае table).

6

Предполагая, что библиотеки не задействованы.

function getNearestTableAncestor(htmlElementNode) { 
    while (htmlElementNode) { 
     htmlElementNode = htmlElementNode.parentNode; 
     if (htmlElementNode.tagName.toLowerCase() === 'table') { 
      return htmlElementNode; 
     } 
    } 
    return undefined; 
} 

var table = getNearestTableAncestor(node); 
if (table) { 
    table.className += ' certain'; 
} 
0

Предполагая, что новые Див уже вставленных в дерево DOM, вы можете использовать JQuery:

$(div_node).parents('table')[0].addClass('certain_class'); 

Голые Javascript может сделать подобные вещи, но вы должны написать цикл для перебора до каждого .parentNode, тест, если это таблица, и т.д. ...

0

Использование JQuery Если HTML-то вроде этого:

<table> 
    <tr><td><div class="divClass">Content</div></td></tr> 
</table> 

Затем вы можете позвонить в родительскую таблицу:

$ ('div.divClass'). Parent();

ниже код даст HTML вашей таблицы:

оповещения (.. $ ('Div.divClass') родитель() HTML());

Вы можете использовать $('div.divClass').parent();, как вы хотите ...

Ура!

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