Как получить позицию <td>в таблице, используя JQuery? - PullRequest
12 голосов
/ 12 сентября 2009

Например:

<table>
<tr><td>1,1</td><td>2,1</td></tr>
<tr><td>2,1</td><td>2,2</td></tr>
</table>

Я хочу использовать следующую функцию:

$("td").click(function(){
alert(xxxx)
})

чтобы получить позицию <td> при нажатии, но как?

Ответы [ 5 ]

22 голосов
/ 01 сентября 2011

Функция index, вызываемая без параметров, получает позицию относительно своих братьев и сестер (нет необходимости проходить иерархию).

$('td').click(function(){   
   var $this = $(this);
   var col   = $this.index();
   var row   = $this.closest('tr').index();

   alert( [col,row].join(',') );
});
16 голосов
/ 12 сентября 2009

Ядро / индекс

$("td").click(function(){

    var column = $(this).parent().children().index(this);
    var row = $(this).parent().parent().children().index(this.parentNode);

    alert([column, ',', row].join(''));
})
7 голосов
/ 08 сентября 2012

Согласно этому ответу , DOM Level 2 предоставляет cellIndex и rowIndex свойств элементов td и tr соответственно.

Позволяет вам сделать это, что довольно читабельно:

$("td").click(function(){

    var column = this.cellIndex;
    var row = $(this).parentNode.rowIndex;

    alert("[" + column + ", " + row + "]");
});
3 голосов
/ 22 июля 2011

В jQuery 1.6:

$(this).prop('cellIndex')
1 голос
/ 02 ноября 2017

$("td").click(function(e){
  alert(e.target.parentElement.rowIndex + " " + e.target.cellIndex)
});
tr, td {
  padding: 0.3rem;
  border: 1px solid black
}

table:hover {
  cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>0, 0</td>
    <td>0, 1</td>
    <td>0, 2</td>
  </tr>
  <tr>
    <td>1, 0</td>
    <td>1, 1</td>
    <td>1, 2</td>
  </tr>
</table>
...