Hàng của bảng và số cột trong jQuery


141

Làm cách nào để có được số hàng và số cột của ô bảng được nhấp bằng jQuery, nghĩa là

$("td").onClick(function(event){
   var row = ...
   var col = ...
});

Câu trả lời:


216

Bạn có thể sử dụng hàm Core / index trong ngữ cảnh cụ thể, ví dụ: bạn có thể kiểm tra chỉ mục của TD trong TR cha của nó để lấy số cột và bạn có thể kiểm tra chỉ số TR trên Bảng, để lấy số hàng:

$('td').click(function(){
  var col = $(this).parent().children().index($(this));
  var row = $(this).parent().parent().children().index($(this).parent());
  alert('Row: ' + row + ', Column: ' + col);
});

Kiểm tra một ví dụ đang chạy ở đây .


Tại sao nó thất bại trên cột kéo dài @grom?
EarlyPoster

@Forkrul Assail, @CMS Không thành công với ROWSPAN's jsbin.com/eyeyu/1099/edit#preview Nhấp vào ô có văn bản "12" . Chỉ số cột phải là 4
Andrew D.

Tôi có một số dữ liệu trong biến "dữ liệu" ..... có thể thêm "dữ liệu" này vào bảng với giá trị col và hàng này không
biến mất

2
ROWSPAN & COLSPAN hoạt động xung quanh: Điều này làm cho nhấp chuột hoạt động khi SPAN được sử dụng jsbin.com/eyeyu/1307/edit
eddyparkinson

9
var row = $(this).closest('tr').index()
SpYk3HH

119
$('td').click(function() {
    var myCol = $(this).index();
    var $tr = $(this).closest('tr');
    var myRow = $tr.index();
});

32

Nhận INDUM INDEX khi nhấp:

$(this).closest("td").index();

Nhận ROW INDEX khi nhấp:

$(this).closest("tr").index();

21

Ra khỏi đỉnh đầu của tôi, một cách sẽ là lấy tất cả các yếu tố trước đó và đếm chúng.

$('td').click(function(){ 
    var colIndex = $(this).prevAll().length;
    var rowIndex = $(this).parent('tr').prevAll().length;
});

6

Bạn có thể xuất dữ liệu đó trong các ô khi bạn đang tạo bảng không?

vì vậy bảng của bạn sẽ trông như thế này:

<table>
  <thead>...</thead>
  <tbody>
    <tr><td data-row='1' data-column='1'>value</td>
      <td data-row='1' data-column='2'>value</td>
      <td data-row='1' data-column='3'>value</td></tr>

  <tbody>
</table>

sau đó sẽ là một vấn đề đơn giản

$("td").click(function(event) {
   var row = $(this).attr("data-row");
   var col = $(this).attr("data-col");
}

1
Những thông số html nào làm những thuộc tính đó tuân thủ? Tôi dường như không thể tìm thấy chúng.
Samantha Branham

5
HTML spec 5, cho phép các thuộc tính tùy chỉnh bắt đầu bằng tiền tố 'data-'.
Chris Brandsma

mặc dù chúng không có trong thông số kỹ thuật nhưng nó sẽ không phá vỡ các trình duyệt cũ hơn <HTML5
Daniel Powell

1
Bạn có thể truy cập các trường "dữ liệu" chỉ bằng cách gọi: $ (this) .data ('row');
WhiteAngel 10/03/2015

0

tốt hơn hết là liên kết một trình xử lý nhấp chuột vào toàn bộ bảng và sau đó sử dụng event.target để nhận TD được nhấp. Đó là tất cả những gì tôi có thể thêm vào lúc 1:20 sáng


Trong khi điều này có thể là một gợi ý có giá trị để giải quyết vấn đề, một câu trả lời tốt cũng cho thấy giải pháp. Vui lòng chỉnh sửa để cung cấp mã ví dụ để hiển thị những gì bạn có ý nghĩa. Thay vào đó, hãy xem xét viết này như là một bình luận thay thế.
Toby Speight

1
cảm ơn, tôi sẽ xem xét sửa đổi câu trả lời này trong 10 năm nữa
mkoryak
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.