我有一個表,用戶可以用鼠標選擇行和列,然後將選定的區域合併到一個單元格中,它的工作原理就像ms單詞表的行爲一樣。html表格選擇與colspan或rowspan
但是,當表具有rowSpan或colSpan時,所選區域不是常規矩形,所以我想將選擇擴展爲常規矩形以便稍後合併。
這裏是rowspan和colspan的例子,當選擇不包括td有rowspan時,它工作正常,否則,選擇是錯誤的。當你有colspan > 1
,因爲小區更換後的cellIndex
值的細胞來調整由前一小區採取的colspan
細胞
$('td').mousedown(function() {
$(this).closest('table').find('td').removeClass('selected');
var start = {
x: this.cellIndex,
y: this.parentNode.rowIndex
}
$(this).closest('table').find('td').mouseover(function() {
var x1 = Math.min(start.x, this.cellIndex);
var y1 = Math.min(start.y, this.parentNode.rowIndex);
var x2 = Math.max(start.x, this.cellIndex);
var y2 = Math.max(start.y, this.parentNode.rowIndex);
$(this).closest('table').find('td').each(function() {
var x = this.cellIndex;
var y = this.parentNode.rowIndex;
if (x >= x1 && x <= x2 && y >= y1 && y <= y2) {
$(this).addClass('selected');
} else {
$(this).removeClass('selected');
}
});
});
var self = this;
$(document).mouseup(function() {
$(self).closest('table').find('td').unbind('mouseover');
$(document).unbind('mouseup');
});
});
複雜的問題...我現在不會嘗試: –
不錯的問題。正如RaviH所指出的那樣,這裏的問題是當單元格中有colspan/rowspan的單元格時,單元格的'cellIndex'屬性會給出誤導性的值。見http://stackoverflow.com/questions/10966687/how-can-i-find-each-table-cells-visual-location-using-jquery/10967488#10967488 – tewathia