mouseenter z-index 10动画到左边,然后mouseleave z-index -10动画回到右边?

时间:2012-01-11 16:58:57

标签: jquery jquery-animate z-index mouseenter mouseleave

我试图在任何时候都将这个隐藏的div放在主div之后,在以下情况下执行:

鼠标进入隐藏的div,它应该动画到左边,然后回到右边,并在主div的顶部

然后当鼠标离开隐藏的div时,它会向左移动,然后向右移动到主div之后。

我不熟悉js和jQuery,所以我尝试了类似的东西:

<div class="mainDiv">
    content of main div

    <div class="hiddenDiv">
    content of hidden div
    </div>

    rest of content of main div
</div>

<script>
jQuery(document).ready(function() {
    jQuery(".hiddenDiv")css('z-index',"-10");
    //tell hiddenDiv to be hidden, this seem to block everything for some reason

    jQuery(".hiddenDiv").mouseenter(function () {
        jQuery(".hiddenDiv").animate({"left": "-=50px"}, "fast").css('z-index',"10"); 
        //when mouse enters, hiddenDiv shows up
    }),
    jQuery(".hiddenDiv").mouseleave(function () {
        jQuery(".hiddenDiv").animate({"left": "+=50px"}, "slow").css('z-index',"-10"); 
        //when mouse leaves, it's hidden again.
    });
});
</script>

但是我看到,当我在乞讨时给隐藏的div一个z指数-10时,没有任何作用。 能不能让我指出正确的方向来解决这个问题?

3 个答案:

答案 0 :(得分:1)

 .css('z-index',"10");

应该写成

 .css('zIndex',"10");

并且你的第二个陈述错了,因为缺少一个点

jQuery(".hiddenDiv").css('zIndex',"-10");

所以请尝试这样写,而不是

jQuery(document).ready(function() {
    var hdiv = jQuery(".hiddenDiv");  /* cache a reference for a matter of performance */

    hdiv.css('zIndex', "-10")
        .mouseenter(function () {
            hdiv.animate({"left": "-=50px"}, "fast")
                .css('zIndex', "10"); 
        })
        .mouseleave(function () {
            hdiv.animate({"left": "+=50px"}, "slow")
                .css('zIndex', "-10"); 
        });
});

答案 1 :(得分:1)

你遇到的第一个第一个问题是,你的hiddendiv无法翻转,它隐藏着你的-10 z索引。就你的选择器而言,它的含义并不存在。

我会将您的第一个选择器更改为:

jQuery(".mainDiv").mouseenter(function () {
    //etc etc

没有这个,你不能将您的hiddenDiv用作选择器

答案 2 :(得分:0)

看一下这个;

jQuery(document).ready(function() {

  // Hide all .hiddenDiv
  //jQuery(".hiddenDiv").css('z-index',"-10");
  jQuery(".hiddenDiv").hide(); // Maybe this would be enough to hide the elements?

  // Bind events to all .mainDiv
  jQuery('.mainDiv')
    .mouseenter(function () {
      jQuery(this).find('.hiddenDiv') // Find all .hiddenDiv in the current .mainDiv
        //.css('zIndex', "10")
        .show()
        .animate({"left": "-=50px"}, "fast");
    })
    .mouseleave(function () {
      jQuery(this).find('.hiddenDiv')
        .animate({"left": "+=50px"}, "slow", function() {
          // This is a callback function that executes when the animation has finished.
          //jQuery(this).css('zIndex', "-10");
          jQuery(this).hide();
        });
    });
});