Чтобы ответить на ваш первый вопрос:
$("#id tr").click(function() {
alert($("#id tr").index(this));
});
Если вы просто сделаете:
$("table tr").index(this);
и у вас есть несколько таблиц на странице, вы получите ошибочный результат.
При этом вам не нужно знать индекс для перемещения строк вверх и вниз в таблице. Например:
<table id="foo">
<tr>
<td><a href="#" class="up">Up</a> <a href="#" class="down">down</a></td>
<td>First row</td>
</tr>
<tr>
<td><a href="#" class="up">Up</a> <a href="#" class="down">down</a></td>
<td>Second row</td>
</tr>
<tr>
<td><a href="#" class="up">Up</a> <a href="#" class="down">down</a></td>
<td>Third row</td>
</tr>
</table>
с чем-то вроде:
$("a.up").click(function() {
var row = $(this).closest("tr");
if (row.prev().length > 0) {
row.insertBefore(row.prev());
}
return false;
});
$("a.down").click(function() {
var row = $(this).closest("tr");
if (row.next().length > 0) {
row.insertAfter(row.next());
}
return false;
});