选择除 $(this) 之外的所有内容

Posted

技术标签:

【中文标题】选择除 $(this) 之外的所有内容【英文标题】:Select all except $(this) 【发布时间】:2016-01-11 15:25:38 【问题描述】:

我有以下代码

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

我正在尝试获取它,以便它会找到单击的 .radio-box 元素,查找它的包含元素 - .container-radio-box - 然后从其中的任何 .select 元素中删除活动状态。

我觉得我可以使用类似的东西

$('.radio-box').not(this).each(function() 

但是它有点复杂,因为有许多 .container-radio-box 元素,它们都需要单独处理。例如。只有被点击的.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 元素中删除活动状态

【问题讨论】:

看来 Burimi 的答案是完美的,除非我们遗漏了什么。如果它不起作用,请包含一些示例 html,这将有很大帮助! 【参考方案1】:

让 jQuery 为您完成繁重的工作 - 选择单击的 .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');

);

【讨论】:

【参考方案2】:

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

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

【讨论】:

谢谢!不幸的是,它似乎仍然无法正常工作,我现在已经编辑了我的问题并在线发布了一个页面示例 这行不通:它会选择所有tds 中的所有.select 元素,包括点击的那个,然后尝试通过与@ 比较来过滤那些.select 元素987654325@。请参阅下面的答案

以上是关于选择除 $(this) 之外的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

SQL 选择除最近日期之外的所有内容

如何使用 MySQL 查询从表中选择除一列之外的所有内容? [复制]

如何使用正则表达式选择除捕获组之外的所有内容?

选择除第一个之外的所有“tr”

您可以选择除 1 或 2 个字段之外的所有内容,而不会出现作家抽筋吗?

jQuery选择除self之外的所有兄弟姐妹和孩子