Select 除了 $(this)

Select all except $(this)

我有以下代码

$('.radio-box').click(function() {
    $(this).parents('.container-radio-box').find('.select').removeClass('state-active');
}

我正在尝试获取它,以便它找到被点击的 .radio-box 元素,寻找它包含的元素 — .container-radio-box — 然后从任何 [=16] 中删除活动状态=]里面的元素。

我觉得我可以使用类似

的东西
$('.radio-box').not(this).each(function() {

然而,它有点复杂,因为有许多 .container-radio-box 个元素,它们都需要在 div 中单独处理。例如。脚本仅应修改所单击 .radio-box 的包含 div 中的 .select 元素。

有谁知道我怎样才能做到这一点?

编辑: 我已经像这样修改了我的脚本:

// radio-box
$('.radio-box').click(function() {

    $(this).parents('.container-radio-box').find('.radio-box').removeClass('state-active');

    var el = this;
        $(this).parents('.container-radio-box')
                .find('.select')
                .filter(function(index){
                    return this != el;
                                })
                .removeClass('state-active');


    $(this).find('input').prop( "checked", true );
    $(this).addClass('state-active');

});

并且还在此处上传了页面,以便您了解它是如何工作的 — http://www.mattpealing.co.uk/_concept/brdcr/form/

我正在尝试获取它,以便左列中的 .select 元素可以保持选中状态 直到 其他列之一被选中,在这种情况下活动状态已删除。

但似乎单击左列也会从其中包含的 .select 元素中删除活动状态

您可以过滤集合并比较 DOM 个元素:

var el = this;
    $(this).parents('.container-radio-box')
            .find('.select')
            .filter(function(index){
                return this != el;
                            })
            .removeClass('state-active');

让 jQuery 为您完成艰苦的工作 - select 被点击的 .radio-box 的兄弟姐妹,并且只搜索其中的 .select 个元素:

$('.radio-box').click(function() {

    // Deselect all radio boxes
    $(this).parents('.container-radio-box').find('.radio-box').removeClass('state-active');

    // Remove active state from inner options in other radio boxes
    $(this).siblings()
        .find('.select')
        .removeClass('state-active');

    // Select this radio box
    $(this).find('input').prop( "checked", true );
    $(this).addClass('state-active');

});