Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 从父类中删除类<;td>;未选择单选按钮的列表_Jquery_Html_Css - Fatal编程技术网

Jquery 从父类中删除类<;td>;未选择单选按钮的列表

Jquery 从父类中删除类<;td>;未选择单选按钮的列表,jquery,html,css,Jquery,Html,Css,我想做的是能够突出显示所选单选按钮的父项,我已经这样做了。我遇到的问题是从未选择的收音机中删除.sel类。我将有多个无线电组设置在一个表中,每行一组 以下是我目前的代码: $(document).ready(function () { $('td.radio').click(function () { $(this).children('input').prop('checked', true); if ($(this).children('input').is(':check

我想做的是能够突出显示所选单选按钮的父项,我已经这样做了。我遇到的问题是从未选择的收音机中删除.sel类。我将有多个无线电组设置在一个表中,每行一组

以下是我目前的代码:

$(document).ready(function () {
$('td.radio').click(function () {
    $(this).children('input').prop('checked', true);

    if ($(this).children('input').is(':checked')) {
        $(this).addClass('sel');
    } else {
        $(this).removeClass('sel');
    }
});
});

我在这里设置了一个JSFIDLE,其中包含我迄今为止管理的内容:

从单击的td的所有同级中删除sel类,然后将其添加到单击的td中:

    $('td.radio').click(function () {
        var $this = $(this);
        $this.children('input').prop('checked', true);       
        $this.siblings('td').removeClass('sel');        
        $this.addClass('sel');        
    });
我建议:

$('td.radio').removeClass('sel').filter(function(){
    return $(this).find('input:checked').length;
}).addClass('sel');
(请注意,页面加载时默认选中了两个
radio
元素

对于更动态的方法(出于某种原因,我最初假设这是一个页面加载事件),请使用:


在JSFIDLE上测试了这一点。它仅从单击的行中删除高亮显示

$(document).ready(function () {
$('td.radio').click(function () {
    $(this).parent().children().each(function(){
        $(this).prop('checked', false);
        $(this).removeClass('sel');
    });
    $(this).children('input').prop('checked', true);
    $(this).addClass('sel');

});
});
 $(this).parent().addClass('sel');
编辑--

不确定这是您要找的,但由于有多行,似乎这就是您要找的

编辑2--


修复了一些格式问题

为了使代码更符合逻辑,我会做一些稍微不同的事情

但首先,这里有一个小提琴演示(感谢您提供了一个!)

这里有一个解释:

与其检查
元素(标记为.radio)上的单击,不如检查实际表单元素上的单击

$('input[type="radio"]').click(function(){
    // ...
}
由于单选按钮按元素名称分组,因此请获取单击的单选按钮的元素名称,以便您可以将该组作为目标

var name = $(this).attr('name');
在无线电组方便的情况下,只需循环遍历每个元素并删除该类

$('input[name="'+name+'"]').each(function(){
    $(this).parent().removeClass('sel');
});
注意:我更喜欢这种方法,因为它不会强制您取消设置/重置所有项目,只设置组中的项目。这有助于节省一些额外的检查项目,我们不需要处理

由于我们将代码更改为在单击给定的单选按钮时触发,因此我们可以简单地将该类添加回单击的按钮

$(document).ready(function () {
$('td.radio').click(function () {
    $(this).parent().children().each(function(){
        $(this).prop('checked', false);
        $(this).removeClass('sel');
    });
    $(this).children('input').prop('checked', true);
    $(this).addClass('sel');

});
});
 $(this).parent().addClass('sel');

我希望这有帮助

小提琴似乎没有做任何事情,没有删除红色,也没有添加红色抱歉应该让它更清楚,需要通过单击其父项(如上所述)来选择收音机。这看起来很正确,在某一点上接近了这一点,尽管我以前没有遇到过.sibbins选择器。谢谢你,伙计!没问题。该文档非常有用且易于使用。这类事情正在进行中: