jquery доступ к родственному TD в таблице

У меня есть следующий HTML-код. Я пытаюсь сделать так, чтобы div с именем javaRatingDiv отображался после установки флажка с именем java.

Я не могу понять, как перейти к следующему TD в таблице через jquery.

<div id="languages">
   <table style="width:inherit">
   <tr style="height:50px; vertical-align:top">
     <td>Select the languages that you are familiar with and rate your knowledge:</td>
   </tr>
   <tr>
     <table style="width:75%;" align="center">   
     <tr id="tableRow"> 
       <td id="firstTD"><input type="checkbox" name="java" value="java" />&nbsp;Java</td>
       <td id="secondTD" style="width:200px;">
         <div id="javaRatingDiv" style="display:none">
           <input name="javaRating" type="radio" value="1" class="star"/>
           <input name="javaRating" type="radio" value="2" class="star"/>
         </div>
       </td>
     </tr>
     </table>
    </tr>
    </table>
</div>

person Sohrab Hejazi    schedule 22.05.2010    source источник


Ответы (2)


Ради вопроса и в случае нескольких "javaRatingDivs" это будет работать внутри функции щелчка флажка:

$(this).parent().next().find('div').show();

.parent() получает родительский элемент. .next() получает следующего родственного элемента, например, NEXT td.

Эта информация предназначена для тех случаев, когда вы сталкиваетесь с проблемами нескольких элементов и НЕ имеете идентификаторов для прямой ссылки. В приведенном выше случае $('#javaRatingDiv').show(); будет отлично работать, как упомянул Патрик.

person Dan Heberden    schedule 22.05.2010
comment
Это именно то, что я искал. Спасибо, Дэн. Это сработало отлично. Ценю объяснение, так как я новичок в JQuery. - person Sohrab Hejazi; 23.05.2010
comment
Поскольку это то, что вам нужно: одна вещь, которую нужно сохранить в своем наборе инструментов, - это функция .parents(). Если 'td' не всегда находится на уровень выше, будет работать что-то вроде этого: $(this).parents('td:first').next().find('div.classOfYourRateDiv').show(); - person Dan Heberden; 23.05.2010
comment
+1 за пример обхода. У меня было ощущение, что это то, чего, возможно, хотел ОП, но он собирался выйти за дверь. :) - person user113716; 23.05.2010

Поскольку у div есть идентификатор, вы можете получить к нему прямой доступ.

$('#javaRatingDiv');

Это захватит div с идентификатором 'javaRatingDiv'.

person user113716    schedule 22.05.2010
comment
Спасибо. Я действительно хочу получить доступ к DIV без идентификатора. Идентификатор, возможно, будет удален. Они будут загружаться из базы данных, и каждый раздел не будет иметь уникального идентификатора. Есть ли доступ к этому с помощью структуры DOM? Может братья и сестры? - person Sohrab Hejazi; 23.05.2010