2011-11-16 4 views
1

Я не могу добиться чего-то, что кажется таким простым. Не знаю, где я ошибаюсь. Пожалуйста, порекомендуйте. Цель состоит в том, чтобы выделить строку таблицы, выбран флажок, соответствующий ей. Я упомянул несколько примеров, в которых говорится об использовании .closest ('tr') или .parent ('tr'), чтобы заставить это работать, но по некоторым причинам в моем случае - его достижение, т.е. оно выделяет все строки, а не только тот, который выбран.JQuery перейти к родительскому <tr>. Проблемы с использованием селекторов parent() или closeest()

Мой HTML

<tr class="EvenRowClass"> 
<td class="ColClass"> 
    <div class="wrapClass" "> 
<span class="tableCol" style="background: someimage.png") </span> 
<span class="tableCol" style="background: someimage.png") </span> 
<input id="Check1" class="selectCheck" type="checkbox" 
     onclick="highlightRow(this,Check1); return false;" value="Check1"> 
</div> 
</td> 
<td>SomeCode</td> 
<td>SomeCode</td> 
<td>SomeCode</td> 

Предположим, что существует еще один блок такого кода с и уникальных идентификаторов для каждого флажка последовательной)

Моя функция JavaScript, которая вызывается по щелчку

function highlightRow(checkbox, id) 
{ 
    $("tr:parent").toggleClass("highlight", checkbox.checked); 
} 

javascript above выбирает все в ta и остальную часть страницы, независимо от того, являются ли они checkd или нет, и применяет к ней класс подсветки. Я пробовал несколько других версий, используя селектор флажка, .closest ('tr'), .parent ('tr'), но ни один из них не работал для меня.

Последние упоминаемые упоминаются только в том смысле, что они влияют только на таблицу, а не на другую.

Просьба сообщить. Я поцарапал себе голову настолько, что теперь стало больно.

ответ

1
function highlightRow(checkbox, id) { 
    $(checkbox).closest('tr').toggleClass('highlight', checkbox.checked); 
}; 
+0

Golden. Большое спасибо. Это сработало. Но у меня вопрос? Почему бы не работать то же самое, если бы я просто идентификатор как селектор, как в. 'function highlightRow (checkbox, id) { var id = id; $ (# id) .parents ("tr"). ToggleClass ("highlight", checkbox.checked); } ' – user1006072

+0

Вам нужно будет: '$ (' # '+ id) .'. Вы также не могли бы пройти ни в checkbox, ни в id и do '$ (this) .' – ThinkingStiff

0

Попробуйте это:

function highlightRow(checkbox, id) 
{ 
    $(checkbox).parents("tr").toggleClass("highlight", checkbox.checked); 
} 
+0

Golden. Но у меня вопрос? Почему бы не работать то же самое, если бы я только идентификатор как селектор, как в. function highlightRow (checkbox, id) { var id = id; $ (# id) .parents ("tr"). ToggleClass ("highlight", checkbox.checked); } – user1006072