2014-12-22 5 views
2

У меня естьКак выбрать определенную ячейку таблицы в определенном отношении к другому?

<table> 
    <tbody> 
     <tr> 
      <th colspan="2">Infobox</th> 
     </tr> 
     <tr> 
      <td>Lorem ipsum ...</td> 
      <td>Lorem ipsum ...</td> 
     </tr> 
     ⁞ 
     <tr> 
      <td>Lorem ipsum ...</td> 
      <td>Lorem ipsum ...</td> 
     </tr> 
     <tr> 
      <th colspan="2">[random stuff]</th> 
     </tr> 
     <!-- *** Where I want to add another row *** --> 
     <tr> 
      <td>Lorem ipsum ...</td> 
      <td>Lorem ipsum ...</td> 
     </tr> 
     ⁞ 

Самый элегантный/эффективный способ, чтобы выбрать и добавить свой дополнительный ряд? Я начал с

$("table th:contains('Infobox')").closest('tbody th[colspan="2"]'); 

Но это не выбирает то, что я хочу. Thanx для вашей помощи и веселых X-mas: o)

+1

Как это http://jsfiddle.net/j08691/gab0kLzs/ ? – j08691

+0

Самый элегантный способ - использовать [Угловое] (https://angularjs.org/). – Max

+0

Спасибо j08691, это правильно, что я искал. Большой! Почему бы вам не ответить на этот вопрос, чтобы я мог с благодарностью оценить и закрыть вопрос? – Robbit

ответ

0

Как насчет. После?

$("table th:contains('Infobox')").after("<tr></tr>") 

Это добавит HTML после селектора.

+0

Это таргетинг на неправильный элемент: http://jsfiddle.net/TrueBlueAussie/y80gzL4k/1/ Обратите внимание, где они хотят добавить новый контент. например 'Где я хочу добавить еще одну строку' –

0

Ваш текущий запрос пытается использовать closest для поиска вверх и вниз по DOM. closestтолько ищет предков.

Это немного туманно, как вы хотите, чтобы настроить таргетинг на правильный стол, но после вашего примера вы хотите что-то вроде этого: http://jsfiddle.net/TrueBlueAussie/y80gzL4k/2/

$('table th:contains("Infobox")') 
    .closest('tbody') 
    .find('tr:has(th[colspan="2"]):last') 
    .after("<tr><th>New row goes here</th></tr>"); 
Смежные вопросы