2010-08-24 85 views
1

所以我开始越来越多地进入jquery。我创建的自定义单选按钮和这样做是为了表明一个单选按钮被选中:我可以减少这个jQuery吗?

$('.radio_1').mousedown(function() { 
    $(this).toggleClass('selected'); 
    $('.radio_2').removeClass('selected'); 
    $('.radio_3').removeClass('selected'); 
}); 
$('.radio_2').mousedown(function() { 
    $(this).toggleClass('selected'); 
    $('.radio_1').removeClass('selected'); 
    $('.radio_3').removeClass('selected'); 
}); 
$('.radio_3').mousedown(function() { 
    $(this).toggleClass('selected'); 
    $('.radio_2').removeClass('selected'); 
    $('.radio_1').removeClass('selected'); 
}); 

使用CSS,我已经隐藏了实际的单选按钮本身。有没有减少这一点,以减少重复性的方法?

谢谢!

回答

2

给所有电台的同一类(.radio在我的例子)。

下面的代码说的是,当一个.radio的鼠标停下来时,从所有的.radio's中删除类,并将其添加到被单击的无线电中。

$('.radio').mousedown(function() { 
    $('.radio').removeClass('selected'); 
    $(this).addClass('selected'); 
}); 
+0

哇。这是如此之小。非常感谢! – Marc 2010-08-24 21:36:40

+0

现在我可以让子标签出现。例如,我在标签内有一个隐藏的div,当我选择它时,我想显示它。 – Marc 2010-08-24 21:39:14

+0

这个怎么样: \t $('。child')。hide(); ('。radio')。removeClass('selected'); \t $('。child')。slideUp('slow'); $('。radio')。mousedown(function(){ \t $(本).addClass( '选择'); \t \t $(本)。儿童( '的孩子。 ')了slideDown(' 慢'); \t}); – Marc 2010-08-24 21:44:29

0

给按钮一个父母,并选择关闭。另外,如果每个人只有一个班级,比如.my-radio或其他什么,那将会更容易。但最糟糕的是,你应该可以做到这一点。

$('.radio_1, .radio_2, .radio_3').mousedown(function() { 
    $('.radio_1, .radio_2, .radio_3').removeClass('selected'); 
    $(this).addClass('selected'); 
}); 
+0

我打算去顶一个,但这确实帮助我解决了另一个问题。谢谢! – Marc 2010-08-24 21:36:18

2
$('[class^=radio_]').mousedown(function() { 
    $('[class^=radio_]').removeClass('selected'); 
    $(this).toggleClass('selected'); 
}); 

在 '类^ =' 获取所有具有以 'radio_' 一类的元素。

+0

这不适用于包含radio_4等的标记。 – 2010-08-24 21:47:53

2

你当然可以。

$('.radio').mousedown(function() { 
    $(this).toggleClass('selected').siblings('.radio').removeClass('selected'); 
})