jQuery切换无线电/父级样式也将切换不同名称的相邻无线电

时间:2012-06-20 20:47:12

标签: jquery toggle radio removeclass closest

首先让您了解我的HTML是什么样的,我有一个包含3组单选按钮的页面,每组无线电都按其容器命名(即Page1,Page2,Page3)。因此,第一组无线电全部共享名称“page1”,第二组共享名称“page2”等。

所以我使用jQuery来切换单选按钮和该无线电的包含表的类(即addClass,removeClass on toggle)。切换工作正常,在切换上添加和删除类也是如此。我的问题是如果我选择了page2或page3的无线电,然后选择/重新选择page1无线电,jQuery将删除page2和page3检查无线电样式的类。

以下是JSfiddle Demo.

的链接

看看我正在使用的jQuery。

$(function() {

$('table').click(function(event) {
    $(this).closest('.container').addClass('selected').parent().siblings().each(function() {
        $(this).find('.container').removeClass('selected');
    });

    if(event.target.type != "radio") {

        var that = $(this).find('input:radio');

        that.attr('checked', !that.is(':checked'));

        if (that.is(':checked'))  {
        that.closest('table').addClass('selected');
    }
   else {
        that.closest('table').removeClass('selected');
}
    }
});
});

2 个答案:

答案 0 :(得分:0)

.parent().siblings()正在接收其他页面,因为如果您添加它解决了问题http://jsfiddle.net/5YnBq/1/

,则第1页周围没有div

答案 1 :(得分:0)

好吧,我不是百分之百,但尝试event.preventDefault();

我认为它正在冒泡,所以当它针对输入时:无线电它使用最外面的表,所以它基本上将目标锁定所有的单选按钮。我没有对此进行过测试,因为在我点击继续之后,这个小提琴不能为我工作但是试一试看看会发生什么