2009-11-30 32 views
15

Tôi có một cái gì đó như thế này:Thay đổi tr background-color

<tr id='<%=currentRow %>' onclick="SetBackgroundColor(this)" style="background-color:Yellow"> 

Khi tôi bấm vào liên tiếp tôi muốn thay đổi màu nền của nó và tôi đã làm như thế này:

function SetBackgroundColor(rowId) 
{ 
    $(rowId).css("background-color", "#000000"); 
} 

nhưng tôi don không biết tại sao nó không hoạt động. Bất kỳ đề nghị xin vui lòng?

+0

Có bất cứ điều gì xảy ra? Hãy thử sử dụng Firebug hoặc một số dòng "cảnh báo" để thu hẹp nếu sự kiện nhấp chuột thậm chí còn kích hoạt, những gì được truyền cho hàm, v.v. –

+0

Bạn cũng có thể tạo lớp CSS và áp dụng lớp cho TR của bạn với javascript. – Roch

+0

Xem một bản demo nhấp chuột vào hàng http://jsbin.com/ufihi3 – Pool

Trả lời

30

IE có một vấn đề với màu nền cho các phần tử TR. Một cách an toàn hơn là để thiết lập nền cho TD và TH của bên trong TR:

<table id="tabletest"> 
    <tr> 
     <td>testcell</td> 
    </tr> 
</table> 

<script> 
$('#tabletest tr').bind('click', function(e) { 
    $(e.currentTarget).children('td, th').css('background-color','#000'); 
}) 
</script> 

Added: bạn có thể gán một xử lý sự kiện duy nhất cho toàn bộ bảng để tăng hiệu suất:

$('#tabletest').bind('click', function(e) { 
    $(e.target).closest('tr').children('td,th').css('background-color','#000'); 
}); 
7

Trong jQuery bạn không phải sử dụng thuộc tính onclick để gán một trình xử lý sự kiện. Giả sử bạn thêm một lớp được gọi là mytr vào mỗi tr mà bạn muốn tác động. Sau đó, bạn có thể làm điều gì đó như sau:

$(document).ready(function(){ 
     $(".mytr").click(function(){ 
      $(this).css("background-color", "#000000"); 
     }); 
}); 

Và điều đó sẽ áp dụng trình xử lý sự kiện cho tất cả các hàng với lớp mytr.

+0

không có gì xảy ra..tôi sử dụng firebug để xem..nó nhảy ở vị trí cần ... nhưng không có gì..vào hàng vàng – user158625

+0

Bạn có sửa đổi điều này để nó không sử dụng công cụ chọn chính xác? – Kezzer

0

Thay vì thay đổi màu nền của hàng trong bảng, hãy thử thay đổi màu nền ô của bảng.

$(document).ready(function() { 
    $(".mytr td").click(function() { 
     $(this).css("background-color", "#000000"); 
    }); 
}); 
1

Một giải pháp đơn giản hơn là có thể sử dụng bộ chọn cho tất cả các hàng trong bảng hoặc addClass.

Ví dụ

$("#myTable tr").click(function() { 
    $(this).css('background-color', '#f00'); 
}); 

hoặc

$("#myTable tr").click(function() { 
    $(this).addClass('selected'); 
}); 
6

chí này thiết lập lại mỗi hàng khi nhấp chuột vào một cái mới ...

$(document).ready(function(){ 

    $('tr').click(function(){ 
    $('tr td').css({ 'background-color' : 'green'}); 
    $('td', this).css({ 'background-color' : 'red' }); 
    }); 

}); 

demo: http://jsbin.com/aciqi/

0

Cảm ơn bạn all..the vấn đề là trong masterpage tôi đã tải j query-1.3.2.min.jsbeforequery-1.3.2-vsdoc.js và đó là cách nó không working..thanks lại

+0

Vui lòng chọn câu trả lời để chúng tôi biết rằng bạn có giải pháp. – Mottie

2
$('#RowID').children('td, th').css('background-color','yellow'); 
Các vấn đề liên quan