2013-09-30 57 views
0

我在頁面上有多個表。 對於每個表格,我希望能夠在點擊tr時切換一個類。如何切換表tr上的類

到目前爲止,這是我對JS:

$(document).ajaxSuccess(function() { 
$("table tr").click(function() { 

    if ($(this).closest("table tr").hasClass("selected_row")) 
    { $(this).closest("table tr").removeClass("selected_row"); } 

    else { $(this).closest("table tr").addClass("selected_row"); } 
}); 
}); 

現在我遇到的問題是,當我點擊該表中的第二TR,上一行不斷添加的類到它。我該如何做到這一點,以便在任何桌子上,一次只能有一個餐桌可以上課。

也不是,頁面上有時候會有多個表,所以解決方案只需要與被點擊的表相關,而不是頁面上的所有表。

謝謝, 馬克

回答

3

最近得到你選擇的父,這已經是表TR,試試這個:

if ($(this).hasClass("selected_row")) { 
     $(this).removeClass("selected_row"); 
    } else { 
     $(this).addClass("selected_row"); 
     $(this).siblings().removeClass('selected_row'); 
    } 
+0

如果您要堅持使用if語句路線而不是toggleClass,則不需要將兄弟行放在它所在的位置。該行應該在if中。 – epascarello

+0

@epascarello然後,我將不得不將它添加到if和其他像這樣的http://jsfiddle.net/Alfie/FtuQM/ – Anton

+1

啊,我的意思是隻在else中,如果行被檢查,比沒有其他行可以被檢查。 http://jsfiddle.net/FtuQM/1/ – epascarello

1

沒有必要的onclick處理程序添加到每個錶行。使用事件冒泡是有利的。如果兄弟姐妹存在,請使用兄弟姐妹獲得該類。

$("table tbody").on("click", "tr", function() { 
    var row = $(this); 
    row.toggleClass("selected_row"); 
    row.siblings("selected_row").removeClass("selected_row"); 
});