jQuery - 使所有表格单元格都可以拖动,除了每行中的第一个单元格

时间:2011-01-07 17:06:26

标签: jquery html-table cell draggable

我无法弄清楚如何使表中的所有单元格都可拖动,除了每行中的第一个单元格。我认为这可能有用:

$("#tableid tbody tr td:not(:first)").draggable({
    connectToSortable: "#sortable",
    helper: "clone",
    revert: "invalid"
});

或者这个:

$("#tableid tbody tr td").not("#tableid tbody tr td:first").draggable({
    connectToSortable: "#sortable",
    helper: "clone",
    revert: "invalid"
});

但两者都只是阻止第一行的第一个单元格可拖动。不是每一排......

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

要选择除第一行td 之外的所有,您需要:

$('#tableid tbody tr').find('td:gt(0)')

在此处测试:http://jsfiddle.net/KsUCj/

通过调用:first,您将找到整个集合中的第一个元素。

另外,如果您将每行中的第一个单元格视为特殊单元格,则听起来您实际上可能需要此标记:

<table><thead><tr>
  <th></th>
  <th scope="col">Column Head 1</th>
  <th scope="col">Column Head 2</th>
</tr></thead><tbody><tr>
  <th scope="row">Row Head</th>
  <td>Row Cell 1</td>
  <td>Row Cell 2</td>
</tr><tr>
  <th scope="row">Row Head</th>
  <td>Row Cell 1</td>
  <td>Row Cell 2</td>
</tr></tbody></table>

这不仅更具语义性,而且为行头的CSS样式提供了更好的钩子,但是你不会遇到这个问题,因为tbody tr td会选择除第一列以外的所有内容。

答案 1 :(得分:0)

不应该是'tr:first td'而不是'tr td:first'?