As per the HTML code the CSS is not matching: 
using .preview a img will be wrong as you are calling the img tag in side the a tag in your CSS. 
However your HTML says that you have img tag inside the div class=preview and a tag is above all.
There are multiple ways to achieve the output. One of the easiest way is as follows: 
EDIT: As per the comment the edited script was posted as below: 
 $(".preview").hover(function() {
    $(this).find("img").attr("src", "http://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Solid_yellow.svg/200px-Solid_yellow.svg.png")
    }, function() {
    $(this).find("img").attr("src", "http://upload.wikimedia.org/wikipedia/commons/b/b3/Solid_gray.png")
    })
Please jQuery in your HTML and write the above script, if you are not using CSS3. 
Fiddle Demo is also modified