抱歉,是否曾经有人问过。

我有一个脚本,当选中该复选框时,该脚本可从父级添加/删除类。工作良好。

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

抱歉,我对JS非常陌生,无法解决。

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


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

感谢您提供的任何帮助!

最佳答案

您可以使用.siblings()查找同级并删除其类。还有两件事:

1)除了使用.parent().parent().parent().,您还可以简单地使用.closest()并传递您要定位的类。这将向上遍历DOM,并找到您要查找的class。如果您将另一个父级添加到HTML,它也将仍然有效

2)您现在不需要else语句,因为单击时将要从另一个.selectable-row中删除​​该类

$(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

正如Jack所指出的,您可以通过在CSS中将overflow设置为autohidden上的.selectable-row来解决浮动问题。更新了我的小提琴以进行反思。

10-06 12:41
查看更多