选择除 $(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');
【讨论】:
谢谢!不幸的是,它似乎仍然无法正常工作,我现在已经编辑了我的问题并在线发布了一个页面示例 这行不通:它会选择所有td
s 中的所有.select
元素,包括点击的那个,然后尝试通过与@ 比较来过滤那些.select
元素987654325@。请参阅下面的答案以上是关于选择除 $(this) 之外的所有内容的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 MySQL 查询从表中选择除一列之外的所有内容? [复制]