2009-08-17 16 views
18

Chcę, aby mój skrypt podświetlał wybrany wiersz i działa świetnie, ale gdy zaznaczono/podświetlono wiersz, chcę go "odznaczony/odznaczony", jeśli inny wiersz jest wybrany. Jak mam to zrobic?Jquery: Zaznacz/usuń podświetlony wiersz tabeli po kliknięciu

Oto aktualny kod do wybierania wiersza, to odznacza, ale tylko wtedy, gdy klikam na samym wierszu ponownie:

$(".candidateNameTD").click(function() { 
      $(this).parents("tr").toggleClass("diffColor", this.clicked); 
     }); 

Html stół

<table id="newCandidatesTable"> 
    <thead> 
     <tr> 
      <th style="cursor: pointer;">ID</th> 
      <th style="cursor: pointer;">Navn</th> 
      <th style="cursor: pointer;">Email</th> 
      <th></th> 
     </tr> 
    </thead> 
    <tbody> 
    <% foreach (var candidate in Model.Ansogninger) 
    { 
     %> 
      <tr id="<%= candidate.AnsogerID %>" class="newCandidatesTableTr"> 
       <td><div id="candidateID"><%= candidate.AnsogerID %></div></td> 
       <td><div id="<%= "candidateName_" + candidate.AnsogerID %>" class="candidateNameTD"><%= candidate.Navn %></div></td> 
       <td><div id="candidateEmail"><%= candidate.Email %></div></td> 
       <td> 
        <div id="<%= "acceptCandidateButton_" + candidate.AnsogerID %>" class="acceptb" style="cursor: pointer; border: 1px solid black; width: 150px; text-align: center;">Godkend</div> 
       </td> 
      </tr> 
     <% 
    } %> 
    </tbody> 
    </table> 

Odpowiedz

22

Można najpierw usunąć zaznaczenie wszystkich wiersze, takie jak

$(".candidateNameTD").click(function() { 
     $(this).closest("tr").siblings().removeClass("diffColor"); 
     $(this).parents("tr").toggleClass("diffColor", this.clicked); 
    }); 

edytuj: tak, sry, ale th e pomysł miał rację;)

+0

To tylko odznaczy kliknięty wiersz. –

+0

dziękuję, użyłem twojego pomysłu ... było to dla mnie najbardziej logiczne :) – Poku

+1

btw jeśli masz zagnieżdżone tabele, to pasuje do wszystkich trów. Najbliższe jest lepsze – redsquare

6
$(".candidateNameTD").click(function() { 
      $("tr").removeClass("diffColor"); 
      $(this).parents("tr").addClass("diffColor"); 
     }); 
4

ta będzie dotyczyła jedynie aktualną tabelę:

$(".candidateNameTD").click(function() { 
    $('table#newCandidatesTable tr').removeClass("diffColor"); 
    $(this).parents("tr").addClass("diffColor"); 
}); 
0

najlepiej za pomocą .live. Jedno zdarzenie jest preferowane w stosunku do wielu (pomyśl o dużym stole, dużym obciążeniu).

$("div.candidateNameTD").live('click'. function() { 
    var $tr = $(this).closest("tr"); 
    //remove any selected siblings 
    $tr.siblings().removeClass('diffColor'); 
    //toggle current row 
    $tr.toggleClass('diffColor');   
}); 
+0

@ redsquare - nie jest konieczne, chyba że dynamicznie dołącza/wstrzykuje wiersze. – karim79

+0

jest, jeśli ma wiele wierszy. 1 wydarzenie jest lepsze niż 100 – redsquare

Powiązane problemy