I’m currently working on a table application heavily coded in javascript using jQuery.
When you click on a td cell jQuery pushes 2px solid black to the border property. Then on blur I remove the style attribute with removeAttr to make it revert back to the stylesheet settings. Works fine in IE9, but when I test it in Chrome, the left border resizes, but stays black.
The only thing that seems to get rid of this is opening the console. When I blur with the console open the style tag removes so I don’t understand why it’s still rendering a black border on the left. Any ideas?
EDIT: I’ve made a video showing the problem I’m experiencing.
http://www.youtube.com/watch?v=JCmYNOO5u4I
Here’s the code:
$("td.display").live('mouseenter', function () {
$(this).addClass('selected');
}).live('mouseleave', function () {
$(this).removeClass('selected');
});
The CSS is:
table TD.selected {
border: 2px solid;
border-color: Black;
}
Instead of using JavaScript to achieve this trivial effect, use CSS. The
:hoverpseudo-selector is well-supported in all modern browsers.I have adjusted your selectors, since
<td>elements are always contained in a<table>element.Demo: http://jsfiddle.net/JKM7e/
Update
This is one of the many table-css-related bugs in Chrome. A work-around is to initiate a re-render. To solve the issue, let Chrome render the page again. This fix should not activate in non-webkit browsers, so an additional variable is added.
I’ve also optimized your code, and replaced the deprecated
livewithon. The new revision can be found here.