You can pick a dividing place, if that's possible in your situation:
<div>Some text that shows all the time
<span class="more"> (more)</span>
<span class="expanding"> and some more text that shows when you hover</span>
</div>
Then in the css, make the "more" class and the "expanding" class hide and show, respectively, as you hover over the div.
.more { display: block; }
.expanding { display: none; }
div:hover > .expanding { display: block; }
div:hover > .more { display: none; }
What this does is show and hide the child elements of the div. If you put the div in the td, it should fill it up and hover will look like its the td that you are hovering in. Or you could just use the td to hold all three.
The only tricky part of this is that it doesn't look good all the time unless you have a paragraph ending just above the "(more)". That's because you can't predict line endings in the middle of a paragraph as the rectangle holding the text changes width.
FIDDLE