Lorenzo
Lorenzo

Reputation: 891

jQuery fadeIn on hover not working: div with jpg inside div

My fiddle:

http://jsfiddle.net/Osceana/tEStg/18/

I have a [hidden] image on my site that's supposed to have 2 events occur upon hover: an mp3 plays, and the image fades in. It's positioned in the middle of the page at the bottom. Was thinking the CSS positioning was causing issues, but when I remove all CSS positioning I still can't get the image to fadeIn. The mp3 DOES play on hover though.

I also don't understand why the image is exceeding the dimensions set on the inner div in CSS. Why is this? My understanding was the inner div should have a height/width of 100% of its parent ("#outerMermaid" in this case).

Thanks for any help!

HTML:

    <div id="outerMermaid">
    <div id="innerMermaid">
      <a href="http://www.google.com"><img src="http://files-cdn.formspring.me/photos/20120507/n4fa814fb4b286.jpg"></a>
</div>
</div>

<audio id="mermaidCall" src="http://www.dailywav.com/sites/default/files/wavs/whitewomen.wav" preload="auto">
    </audio>

CSS:

#outerMermaid
{
    height:287px;
    width::187px;
    position:fixed;
    top:70%;
    left:50%;

}

#innerMermaid
{
    position:relative;
    top:-50%;
    left:-50%;
    width:100%;
    height:100%;
    visibility:hidden;
}

js:

$( document ).ready(function() {
var call = $("#mermaidCall")[0];
$("#outerMermaid").hover(function() {
    call.play();
    $("#innerMermaid").fadeIn("slow");
}, function() { 
    $("#innerMermaid").fadeOut(); 
});
});

Upvotes: 0

Views: 200

Answers (2)

matewka
matewka

Reputation: 10158

You're passing 3 callback for the jQuery.hover. It should be 2:

$(function() {
    var call = $("#mermaidCall")[0];
    $("#outerMermaid").hover(function() {
        call.play();
        $("#innerMermaid").fadeIn("slow");
    }, function() { 
        $("#innerMermaid").fadeOut(); 
    });
});

To hide the content flowing outside the #outerMermaid add overflow:hidden to it:

#outerMermaid {
    overflow: hidden;
}

EDIT:

Moreover the fading doesn't work because you have a syntax error in your #outerMermaid style

width::187px;

should be

width:187px;

It causes the #outerMermaid to be 0 wide, which practically makes it impossible to hover.

Also, the #innerMermaid should have

display: none;

instead of

visibility: hidden;

Here's updated fiddle of yours: FIDDLE.

Upvotes: 2

use js

    var call = $("#mermaidCall")[0];
      $("#outerMermaid").hover(function() {
        call.play();
        $("#innerMermaid").fadeIn("slow");
     },
     function() {
        $("#innerMermaid").fadeOut();
     }); 

css

            #outerMermaid
    {
        height:287px;
        width::187px;
        position:fixed;
        top:70%;
        left:50%;
           border: 1px solid #000;

    }

    #innerMermaid
    {
        position:relative;
        top:-50%;
        left:-50%;
        width:100%;
        height:100%;
        display:none;
    }

Upvotes: 0

Related Questions