In your original code the $(this)
in the image source is not what you think -
$(this).find('img').attr('src', $(this).data('hover')); //second $(this) is still the column, not the image
Here is a less convoluted solution -
$('.col').mouseenter(function () {
var hover = $(this).find('img').data('hover');
var original = $(this).find('img').attr('src');
$(this).find('img').attr('data-original', original);
$(this).find('img').attr('src', hover);
}).mouseleave(function () {
var original = $(this).find('img').data('original');
$(this).find('img').attr('src', original);
});
You can see it at work here - http://jsfiddle.net/jayblanchard/au7a6/