在TD的jquery Tree Traversal prev()

Gui*_*s 2 3 jquery traversal

我试图在之前的TD中通过jquery检查/取消选择一个选择框.我已经尝试了几个小时的几个组合与prev(),parent(),nearest(),但仍然没有结果...这是示例代码:

<table>
 <tr>
 <td><input type="checkbox" class="resultcheck"></td>
 <td><label class="resultchecklabel">Text 1</label></td>
 </tr>

 <tr>
 <td><input type="checkbox" class="resultcheck"></td>
 <td><label class="resultchecklabel">Text 2</label></td>
 </tr>

</table>

<script>
$('.resultchecklabel').live('click', function() {
 if ($(this).prev('td input:checked').val() != null) 
 {
  $(this).prev('td').prev("input").removeAttr("checked");
 }
 else
 {
  $(this).prev('td').prev("input").attr("checked","checked");
 }
});
</script>
Run Code Online (Sandbox Code Playgroud)

谁能帮我解决这个问题?非常感谢!

tva*_*son 9

@Adam和@peterendidit击中头部 - 这里不需要javascript/jQuery.

你的代码不起作用的原因可能是因为this在你的上下文中是label元素,而td彼此的兄弟是,而不是label.我认为如果您有更复杂的要求 - 例如额外的造型等,这将完成您想要的并且就足够了.

var cb = $(this).closest('td')  // containing TD
                .prev('td')     // previous TD
                .find('input'); // input within TD
if (cb.find(':checked').length == 0) { // not checked
    cb.attr('checked','checked');
}
else {
    cb.removeAttr('checked');
}
Run Code Online (Sandbox Code Playgroud)