Да, я тоже знаю, что это старый пост ..
Я сделал это таким образом, что работает во всех браузерах!
Просто создайте элемент, пусть он будет #cellsel. Не забудьте установить абсолютное или относительное позиционирование и установить соответственно левый и верхний уровни и z-индекс, отображать в ноль (чтобы он был сначала невидимым).
Теперь стратегия состоит в том, чтобы использовать jquery для прикрепления #cellsel к тд при наведении курсора мыши ... хуже всего - поиграть с событиями mouseenter / mouseleave / mousemove и переменной флага, чтобы проверить, когда мышь покинула конкретный тд ...
$('***td selector***').mouseenter(
function(e){
var $this= $(this);
if(!ins){//global variable ins -- this is our flag!
var off= $this.offset();
var w= $this.width()-1;
var h= $this.height()-1;
//#cellsel is the element i created to draw over a td when the mouse hovers a particular td..
$('#cellsel').css({'top':off.top+'px', 'left':off.left+'px', 'width':w+'px', 'height':h+'px', 'display':'block'});
ins=true;
$this.bind('mouseleave',function(){
$(this).unbind('mouseleave');
ins=false;
});
}//#grid is the table!
}).parents('#grid').mousemove(
function(e){
if(ins){
var $this= $(this).find('#cellsel');
var off= $this.offset();
var w= $this.width();
var h= $this.height();
if( (e.pageX < off.left) || (e.pageY < off.top) || (e.pageX > (off.left + w)) || (e.pageY > (off.top + h)) )
ins=false;
}
});
Буду признателен, если кто-то внесет исправление в этот или лучший ответ ... спасибо!
Кроме того, нет необходимости использовать таблицы, вы можете выполнить то же самое, используя вложенные элементы div и оставив плавающий символ css! Чтобы убедиться, что граница обрушена, примените такой jquery:
$('***selector to all divs except the ones with the css clear propiety set***').css({'float': 'left', 'width': '100px', 'border': '1px solid #CCC','margin-bottom':'-1px','margin-right':'-1px'});