EDIT
Это простая проблема, которая имеет простое решение. Я не вижу необходимости в неприятных хаки, которые могут сломаться в некоторых браузерах или занять время обработки. Тем более, что есть аккуратное и простое решение CSS.
Сначала вот демо
Вдохновленный решением @ Ник для очень похожей проблемы, я предлагаю простое решение css + jquery.
Во-первых, вот мини-плагин, который я написал. Плагин обернет каждую ячейку ссылкой:
jQuery.fn.linker = function(selector) {
$(this).each(function() {
var href = $(selector, this).attr('href');
if (href) {
var link = $('<a href="' + $(selector, this).attr('href') + '"></a>').css({
'text-decoration': 'none',
'display': 'block',
'padding': '0px',
'color': $(this).css('color')
})
$(this).children()
.css('padding', '0')
.wrapInner(link);
}
});
};
А вот пример использования:
$('table.collection tr').linker('a:first');
И все CSS вам нужно:
table.collection {
border-collapse:collapse;
}
Это так просто.
Вы можете использовать объект события, чтобы проверить тип щелчка мыши. В этой статье обсуждается аналогичная проблема.
В любом случае, вот как это сделать:
$("table#row_link tbody tr").click(function () {
if((!$.browser.msie && e.button == 0) || ($.browser.msie && e.button == 1)){
if (!e.ctrlKey) {
// Left mouse button was clicked without ctrl
window.location = $(this).find("a:first").attr("href");
}
}
});