Как найти родительский tr td с помощью jQuery?

20

У меня есть следующее:

    tdToPad = tds.filter('[id^="input_Title_"]')
    pad = 60;
    tdToPad.css('margin-left', pad);

Что бы я хотел сделать, это удалить любой класс, начинающийся с «X-», и предоставить строку, содержащуюся в «tdToPad», классу «X-» + pad.

Что-то вроде:

<tr class='X-60'>
   <td>
   </td>
</tr>

То, что toToPad относится к элементу td в строке. Как я могу предоставить родительскому элементу tr класс «X-» + pad? Я думаю, мне нужно что-то вроде следующего, но если это правильный способ сделать это, то как я могу удалить уже существующие элементы с классом «X-» somevalue, а затем дать этому элементу правильный класс?

tdToPad.Parent('tr')
    
задан Alan2 21.07.2012 в 10:48
источник

2 ответа

41

Вы можете использовать closest() метод:

  

Получить первый элемент, который соответствует селектору, начиная с текущего элемента и развиваться через дерево DOM.

tdToPad.closest('tr')
       .addClass('X-' + pad)

обновление:

tdToPad.closest('tr').get(0).className = tdToPad.closest('tr').get(0).className.replace(/\bX\-.*?\b/g, '');
tdToPad.closest('tr').addClass('X-' + pad)
    
ответ дан undefined 21.07.2012 в 10:50
  • Там может быть класс с «X-», за которым следует номер. Есть ли способ удалить это, прежде чем добавлять новый класс? –  Alan2 21.07.2012 в 10:53
  • @Gemma да, вы можете удалить класс, а затем добавить еще один, попробуйте обновленный ответ. –  undefined 21.07.2012 в 10:55
  • спасибо, но как я могу удалить только классы с «X-» в начале их имен? В вашем примере вы просто поместите имя класса «class». У меня есть класс, который может быть чем угодно, начиная с «X-», и там может быть или не быть уже там. Я просто хочу заменить его последним. –  Alan2 21.07.2012 в 10:56
  • @ Гемма, пожалуйста, попробуйте обновленный ответ. –  undefined 21.07.2012 в 11:03
  • Большое спасибо за вашу помощь :-) –  Alan2 21.07.2012 в 11:03
Показать остальные комментарии
6

Ты почти прав. Просто используйте правильное написание для parent() ( document ) и добавьте addClass() (docu ).

tdToPad.parent('tr').addClass( 'X-' + pad );
    
ответ дан Sirko 21.07.2012 в 10:51
  • Лучше ли использовать родителя или ближайшего? Могу ли я удалить уже существующие классы, которые начинаются с X-? –  Alan2 21.07.2012 в 10:55