2013-07-13 67 views
0

到目前爲止,我已經計算出大部分代碼,當點擊該行時,我需要選擇<tr>內的單選按鈕&以在點擊時更改<tr>的顏色,但我需要能夠改變顏色回&如果用戶選擇一個不同的更改新的<tr>的顏色。現在它只是改變行的顏色,但不會改變它們。代碼如下:選擇新的tr後更改選定的tr顏色

<script> 
var prevTr; 
$('tr').click(
     function() { 
      $('input[type=radio]',this).attr('checked','checked'); 
      $(this).addClass('selectedtr');//css('background-color', 'Green'); 
      prevTr = $(this).id; 
      $("#"+prevTr).removeClass('selectedtr'); 
     } 
    ); 
... 

回答

1

所有tr元素刪除selectedtr類第一,然後將其添加到當前的一個:

$('tr').click(
     function() { 
      $('input[type=radio]',this).prop('checked','checked'); 
      $(this).siblings().removeClass('selectedtr'); 
      $(this).addClass('selectedtr'); 
     } 
    ); 

編輯 - 我不認爲大衛·托馬斯的回答是相當你在找什麼,但我確實認爲siblings()選擇比選擇所有tr元素更有效率。

另一個編輯

關於你的評論:prop應該用來代替attr。這裏有一個小提琴:

http://jsfiddle.net/xQyAV/

+0

因此,出於某種原因,使用此解決方案和「大衛托馬斯」的解決方案它的工作了一段時間,但突然,單選按鈕選擇停止工作,雖然行仍然改變顏色。它工作大約6次,然後突然單選按鈕停止選擇&只有行顏色改變。 – user2579958

+0

我剛剛意識到,無論我是否使用代碼來突出顯示該行,都會發生此問題。出於某種原因,單擊行時選擇單選按鈕的代碼只能工作4到5次。任何想法爲什麼? – user2579958

+0

好吧,我剛剛發現了這個問題。一旦單選按鈕被這種方法「檢查」,如果你檢查一個不同的單選按鈕並試圖檢查它,不再切換。我猜我必須以同樣的方式清除所有單選按鈕上的「checked」屬性。這樣做的最好方法是什麼? – user2579958

0

我會用CSS:

binput[type=radio]:hover { 
    //here edits 
    //the setting back happens automaticly 
} 
+0

只有在鼠標超過它時纔會改變它,而不是我想要做的。我需要能夠**選擇**它。 – user2579958

+0

然後您可以添加僞狀態:選中或:單擊等。 順便說一句,你可以谷歌它:http://www.javascriptkit.com/dhtmltutors/structuralcss.shtml – GFP

0

我建議:

$('input[type=radio]').change(function(){ 
    var self = this, 
     row = $(self).closest('tr'); 
    row.addClass('trSelected').siblings().removeClass('reselected'); 
}); 
0

我認爲只需要記住當前之前刪除類id entifier:

$(function() { 
    var prevTr = false; 
    $('tr').click(function() { 
     if (prevTr) { 
      $("#" + prevTr).removeClass('selectedtr'); 
     } 
     prevTr = $(this).id; 
     $('input[type=radio]', this).attr('checked', 'checked'); 
     $(this).addClass('selectedtr'); 
    }); 
});