Recherche d’une position de cellule (ligne, colonne) dans des tableaux nesteds

J’ai le simple jQuery suivant qui me dit quelle ligne / colonne se trouve dans une cellule (à l’exception des colspans)

var col = $this.index() + 1; var row = $this.closest('tr').index() + 1; 

C’est assez simple … sauf que mes tables sont nestedes dans d’autres tables et je ne sais pas ce que l’offset devrait être. Par exemple, j’ai cellule (1,1), cette cellule est dans un tableau, qui est dans la deuxième cellule d’un autre tableau … Et cette première cellule a un tableau à trois colonnes. Donc, ma cellule est vraiment (4,1)

EDIT: Un échantillon plus complet, avec plus de cas de test. Je l’ai presque résolu. Juste quelques cas étranges qui posent des problèmes. (Maintenant avec des tests colorés)

http://jsfiddle.net/gibble/J3uER/

… Je réalise que ce n’est pas normal et que le HTML est stupide, mais c’est avec ça que je dois travailler.

http://jsfiddle.net/juSm2/

Je l’ai fait avec des compteurs d’itération. C’est un peu complexe, mais votre tâche aussi. 🙂 Et quelques modifications html sont nécessaires: nous devons marquer les lignes principales pour les différencier des lignes nestedes. J’ai ajouté la classe .row pour atteindre ceci.

 $('td').click(function (event) { event.stopPropagation(); $(this).addClass('clicked'); var row = 0; $('tr.row').each(function () { row++; if ( $(this).find('.clicked').length ) { var td = 0; $(this).find('td').each(function () { if ( !$(this).find('td').length ) { td++; if ( $(this).is('.clicked') ) { alert( 'row = ' + row + ', td = ' + td ); $('.row .clicked').removeClass(); } } }); // td each } }); // .row each }); // td click  ...  ... 
A1 B1
A2 B2
...
A3 B3
...
F3 G3