2009-01-07 38 views
1

我想一個類添加到選定的無線輸入 ,然後刪除該上課的時候選擇了另一個相同類型的無線電將一個類別「釘」到所選的單選按鈕?

單選按鈕有類「radio_button」,但我不能讓 該類用下面的代碼進行更改。

jQuery(".radio_button").livequery('click',function() { 

     $('input.radio_button :radio').focus(updateSelectedStyle); 
     $('input.radio_button :radio').blur(updateSelectedStyle); 
     $('input.radio_button :radio').change(updateSelectedStyle); 
    } 
    function updateSelectedStyle() { 
     $('input.radio_button :radio').removeClass('focused'); 
     $('input.radio_button :radio:checked').addClass('focused'); 
    } 
+0

不錯的問題,因爲我瞭解了livequery插件。順便說一句,你的代碼示例有一個大括號「)」缺失。 – 2009-01-07 19:45:06

回答

2

Tre問題是由選擇器中的一個額外空間引起的。

相反的:

$('input.radio_button :radio') 

你想寫:

$('input.radio_button:radio') 
1
  • 給每個單選按鈕的唯一ID
  • 通上點擊
  • 所有單選按鈕與同一類中刪除「聚焦」類名
  • 添加了ID的「集中「類到帶有您傳遞的ID的單選按鈕
0

首先,我同意劉若英Saarsoo的有關額外的空間答案。

其次,你是否也嘗試將樣式應用於單選按鈕標籤?您可能想要將按鈕和標籤以某種方式包裝在一起。例如:

<span class="radiowrapper"><input type="radio" name="system" value="1" class="radio_button"> 1</span> 
<br> 
<span class="radiowrapper"><input type="radio" name="system" value="2" class="radio_button"> 2</span> 

然後擺脫在你的liveQuery調用額外的電話和代碼移動updateSelectedStyle()功能到您的liveQuery電話(我注意到的問題與IE瀏覽器,否則):

jQuery(".radio_button").livequery('click',function() { 
     $('input.radio_button:radio').parent(".radiowrapper").removeClass('focused'); 
     $('input.radio_button:radio:checked').parent(".radiowrapper").addClass('focused'); 
    }); 
2

您可能還想利用jQuery的可鏈接性來減少您正在進行的工作量。 (而不是一遍又一遍地重新找到這些按鈕)。類似這樣的:

jQuery(".radio_button").livequery('click',function() { 
    $('input.radio_button:radio') 
     .focus(updateSelectedStyle) 
     .blur(updateSelectedStyle) 
     .change(updateSelectedStyle); 
    }); 
    function updateSelectedStyle() { 
    $('input.radio_button:radio') 
     .removeClass('focused') 
     .filter(':checked').addClass('focused'); 
    } 
相關問題