2011-11-16 47 views
1

我无法实现看起来如此简单的事情。不知道我哪里错了。请指教。 目标是突出显示一个表格行是与其对应的复选框被选中。我已经提到了几个使用.closest('tr')或.parent('tr')来解决这个问题的例子,但由于某些原因,我的情况 - 它的超实现,即它突出显示所有行,而不仅仅是一个被选中。jquery导航到父项<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选择了所有的ta无论是否进行检查,并将高亮级别应用于该页面。 我尝试过使用复选框选择器,.closest('tr'),.parent('tr')的其他几个版本,但他们都没有为我工作。

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

请指教。我已经把我的头挠了一下,现在开始伤害了。

回答

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

金。非常感谢。这工作。但我有一个问题?为什么不会同样的工作,如果我只是ID作为选择器... '功能highlightRow(复选框,ID) { var id = id; $(#id).parents(“tr”)。toggleClass(“highlight”, checkbox.checked); ' }' – user1006072

+0

你必须这样做:'$('#'+ id).'。您也可以不通过复选框或ID,并执行'$(this).' – ThinkingStiff

0

试试这个:

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

Golden。但我有一个问题?为什么不会同样的工作,如果我只是身份证作为选择器... 函数highlightRow(复选框,ID) { var id = id; $(#id).parents(“tr”)。toggleClass(“highlight”, checkbox.checked); } – user1006072