2010-08-24 80 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'); 
})