Jquery 正在改变 (this) 的状态。parent 在收音机上 select

Jquery changing state of (this).parent on radio select

抱歉,如果之前有人问过这个问题。

我有一个脚本,当复选框被选中时,它 adds/removes 来自 parent 的 class。工作正常。

但是,当我将复选框更改为收音机时(在脚本和 HTML 中),脚本仅将 class 添加到 parent - 它不会选择另一个收音机时将其删除。

抱歉,我对 JS 很陌生,无法弄明白。

Fiddle here http://jsfiddle.net/RussellJones/Lh1ymzax/1/

复选框的自定义 class 是基于此代码笔的,这就是 HTML 以这种方式格式化的原因。 http://codepen.io/lavoiesl/pen/rjcIx

感谢您的帮助!

您可以使用 .siblings() 找到兄弟姐妹并删除他们的 class。还有两件事:

1) 您可以简单地使用 .closest() 并传递目标 class 而不是使用 .parent().parent().parent().。这将向上遍历 DOM 并找到您要查找的 class。如果您将另一位家长添加到 HTML

,它也仍然有效

2) 您现在不需要 else 语句,因为您将在单击

时从另一个 .selectable-row 中删除 class
$(document).ready(function() {
  $('input:radio').change(function(){
    if($(this).is(":checked")) {
        $(this).closest(".selectable-row").addClass("selected-row").siblings(".selectable-row").removeClass("selected-row");
    } 
   });
});

FIDDLE

正如杰克指出的那样,您有一个浮动问题,可以通过将 overflow 设置为 auto.selectable-row 中的 hidden 来纠正32=]。更新了我的 fiddle 以反映。