Jquery导航到父级。使用parent()或nearest()选择器的问题

时间:2011-11-16 02:38:20

标签: jquery html-table traversal tablerow

我无法实现看似简单的事情。不知道我哪里错了。请指教。 目标是突出显示一个表行是对应它的复选框被选中。我已经提到了几个关于使用.closest('tr')或.parent('tr')来解决这个问题的例子,但出于某种原因,我的情况是 - 它过度实现了它突出了所有行而不仅仅是一个被选中。

我的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>

假设存在另一个此类代码块,其中每个复选框都有一个唯一的ID顺序)

我点击

调用的JavaScript函数
    function highlightRow(checkbox, id)
{
   $("tr:parent").toggleClass("highlight", checkbox.checked);   
}   

上面的javascript选择表格中的所有内容以及页面的其余部分,无论它们是否被检查,并将高亮类应用于它。 我使用复选框选择器,.closest('tr'),。parent('tr')尝试了其他几个版本,但它们都没有为我工作。

提到的最后几个只是更好,因为它们影响表中的唯一内容,而不影响页面上的其他内容。

请指教。我已经摸不着头脑,现在开始受伤了。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

试试这个:

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