开发者

Jquery Div Hover change other Div Class

I'm trying to make one div change its class when hovering over its container div. See below the the code.. Structure goes like this:

Div Container

   Top Div

   Middle D开发者_高级运维iv

   Bottom Div

(End Div Container)

Now What I want is when hovering over the container I want the bottom div to add the class called "fboto" which changes/adds a background image to that div.

Below is my current code using jquery however it doesn't seem to do anything.

<script>
$("#fbot").hover(
  function () {
    $(this).addClass("fboto");
  }

);


</script>



<!-- fullbox container -->
<div id="fbox">
<div id="ftop"></div> <!-- top of fullbox -->



<!-- middle of fullbox -->
<div id="fmid">

</div>
<!-- end middle of fullbox -->



<div id="fbot"></div> <!-- bottom of fullbox -->
</div>
<!-- end fullbox container -->


I threw together a jsfiddle for you here.

as @charliegriefer said - make sure you have jQuery included and the css for .fboto is defined.

I may have misunderstood what you were asking, so I updated my jsfiddle. I think @Felix Kling is right though - you were just missing the $(function(){...}); - which is basically a jquery onload method.


Basically everything needs to go into the document ready function. Also if you use hover, you may need to use prepend. Notice that this is a fully working example.

$(document).ready(function () {

}

see below the html code:

<div id="container1" class="container1White">

<label>Main Text</label>

<div id="name1"><h1>Heading</h1></div>

<div id="name2"><p>Body</p></div>

<div id="name3"><p>Footer</p></div>

 

</div>

 

<script language="javascript" type="text/javascript">

    $(document).ready(function () {

        $("#name1").mouseover(

            function () {

                $(this).addClass("container1Red");

            }

         );

 

 

        $("#name2").hover(

            function () {

                $(this).addClass("container1White");

            }

         );

 

 

 

 

 

        var name3FlipFlop = true;

        $("#name3").mouseover(

 

            function () {

                if (name3FlipFlop == true) {

                    $("#container1").removeClass("containerWhite");

                    $("#container1").addClass("container1Black");

                    name3FlipFlop = false;

                }

                else {

                    $("#container1").removeClass("container1Black");

                    $("#container1").addClass("containerWhite");

                    name3FlipFlop = true;

 

                }

            }

         );

 

 

 

 

 

    });

</script>


You have to put your jQuery code into $(function() {...}) so that it is executed after the whole DOM is loaded. You probably also want to remove the class after hovering:

$(function() {
    $("#fbot").hover(function () {
        $(this).addClass("fboto");
    },
    function () {
        $(this).removeClass("fboto");
    });
});

(Read about the .ready() function -- I just presented a commonly used shortcut)

Furthermore, you said you want to add a class to footer when its container div is hovered. So would the class also be added if "top div" is hovered? If so, call hover on the container div:

$("#fbox").hover(function () {
    $("#fbot").addClass("fboto");
},
function () {
    $("#fbot").removeClass("fboto");
});

If not, you can make use of the mouseover and mouseout events:

$("#fbox").mouseover(function(e) {
    if(e.target == this) {
        $("#fbot").addClass("fboto");
    }
}).mouseout(function(e) {
    if(e.target == this) {
        $("#fbot").removeClass('fboto');
    }
});

Update:

It seems that the browser does no apply the style defined in the class fboto.

Jquery Div Hover change other Div Class

I think this is because the ID selector has a higher priority than the class selector (because it is more specific). Try to change your CSS to:

#fbot.fboto {
   /*...*/
}

Update2: And apart from that, margin, width, etc are exactly the same in both styles, and although the background images have different names, the image itself is exactly the same (here and here).
So event if you did everything correctly, you would not see a difference!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜