2009-08-17 26 views
18

Tôi muốn tập lệnh của tôi đánh dấu hàng mà tôi chọn và nó hoạt động tốt, nhưng khi một hàng được chọn/tô sáng, tôi muốn nó được "bỏ chọn/tắt sáng" nếu khác hàng được chọn. Làm thế nào để tôi làm điều này?Jquery: Đánh dấu/bỏ chọn hàng của bảng khi nhấp vào

Đây là mã hiện tại để chọn một hàng, nó Bỏ chọn, nhưng chỉ khi tôi bấm vào cùng hàng một lần nữa:

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

bảng Html

<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> 

Trả lời

22

Trước tiên, bạn có thể bỏ chọn tất cả hàng, như

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

chỉnh sửa: yep, sry, but th e ý tưởng đã đúng;)

+0

Điều này sẽ chỉ bỏ chọn hàng được nhấp. –

+0

cảm ơn, tôi đã sử dụng ý tưởng của bạn ... nó là hợp lý nhất đối với tôi :) – Poku

+1

btw nếu bạn có các bảng lồng nhau, nó sẽ khớp với tất cả các điểm. gần nhất là tốt hơn – redsquare

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

này sẽ chỉ ảnh hưởng đến bảng hiện tại:

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

nhất sử dụng .live. Một sự kiện được ưa thích hơn nhiều (nghĩ bảng lớn, chi phí lớn).

$("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 - không cần thiết trừ khi anh ấy tự động thêm/chèn hàng. – karim79

+0

nó là nếu anh ta có nhiều hàng. 1 sự kiện tốt hơn 100 – redsquare

Các vấn đề liên quan