我有以下代码
$('.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
元素,它们都需要单独处理。例如。只有被点击的.select
的包含div中的.radio-box
元素才能被脚本修改。
有谁知道我怎么做到这一点?
修改 我像这样修改了我的脚本:
// 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
元素中删除活动状态
答案 0 :(得分: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');
});
答案 1 :(得分:0)
您可以过滤集合并比较DOM元素:
var el = this;
$(this).parents('.container-radio-box')
.find('.select')
.filter(function(index){
return this != el;
})
.removeClass('state-active');