Jquery在无线电选择上改变(this).parent的状态

时间:2015-01-16 16:44:50

标签: javascript jquery html css radio-button

如果之前有人问过,请道歉。

我有一个脚本,当选中该复选框时,它会从父级添加/删除一个类。工作正常。

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

对不起,我是JS的新手,无法解决这个问题。

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

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

感谢您提供任何帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用.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

正如杰克指出的那样,你有一个浮动问题,可以通过在你的CSS中overflow autohidden设置.selectable-row来纠正。更新了我的小提琴以反映。